Copy MPL sequence at runtime?

Evening all,
I'd like to copy the contents of a boost::mpl::vector_c (or similar)
into an output iterator at runtime. I've not found a clean way to get
an MPL sequence into a runtime-usable form. So far, I've gotten the
included ugliness to work.
0) Is there some simple, idiomatic way to accomplish this goal that I've missed?
1) Any suggestions for how to clean this up? Specifically ways to
reduce the assumptions about the underlying MPL sequence or fixes for
braindead mistakes I've made?
2) Is there some way to have syntax like 'seqcopy<S>(iter)' where the
iterator type is deduced but the sequence type is explicit?
Thanks,
Rhys
#define BOOST_TEST_MODULE $Id: test_mpl.cc 996 2010-03-18 07:04:23Z rhys $
#include ::type> {
void operator()(FI fi) {
*fi++ = front<S>::type::value;
seqcopy

Rhys Ulerich wrote:
Evening all,
I'd like to copy the contents of a boost::mpl::vector_c (or similar) into an output iterator at runtime. I've not found a clean way to get an MPL sequence into a runtime-usable form. So far, I've gotten the included ugliness to work.
0) Is there some simple, idiomatic way to accomplish this goal that I've missed? 1) Any suggestions for how to clean this up? Specifically ways to reduce the assumptions about the underlying MPL sequence or fixes for braindead mistakes I've made? 2) Is there some way to have syntax like 'seqcopy<S>(iter)' where the iterator type is deduced but the sequence type is explicit?
Thanks, Rhys
Good morning, 0) the "only" run-time stuff in the MPL is mpl::for_each. 1) See attached, I guess this could be considered a bit cleaner. 2) Probably easiest by writing a function that does the type deduction for you. But ... Perhaps Boost.Fusion is what you are looking for? Hope this helps, Cheers, Rutger

Rutger ter Borg schrieb:
Rhys Ulerich wrote:
Good morning,
0) the "only" run-time stuff in the MPL is mpl::for_each.
Chapter 9 of the book c++ template metaprogramming from Abrahams and Gurtovoy gives an explanation about mpl::for_each with type visitation. hth Cheers, Kim
1) See attached, I guess this could be considered a bit cleaner. 2) Probably easiest by writing a function that does the type deduction for you.

AMDG Rutger ter Borg wrote:
Rhys Ulerich wrote:
I'd like to copy the contents of a boost::mpl::vector_c (or similar) into an output iterator at runtime. I've not found a clean way to get an MPL sequence into a runtime-usable form. So far, I've gotten the included ugliness to work.
0) Is there some simple, idiomatic way to accomplish this goal that I've missed? 1) Any suggestions for how to clean this up? Specifically ways to reduce the assumptions about the underlying MPL sequence or fixes for braindead mistakes I've made? 2) Is there some way to have syntax like 'seqcopy<S>(iter)' where the iterator type is deduced but the sequence type is explicit?
Good morning,
0) the "only" run-time stuff in the MPL is mpl::for_each. 1) See attached, I guess this could be considered a bit cleaner. 2) Probably easiest by writing a function that does the type deduction for you.
How about this
#include

I'd like to copy the contents of a boost::mpl::vector_c (or similar) into an output iterator at runtime.
Thank you for the help Rutger, Kim, and Steven, and especially for the
mpl::for_each examples and the copy functor.
The more complete use case was to turn an MPL sequence into a form
usable within an initialization list for either boost::array or
something requiring an iterator. For completeness, the helper class I
finally went with is below.
I appreciate your expertise,
Rhys
#define BOOST_TEST_MODULE $Id: test_mpl.cc 999 2010-03-18 15:08:46Z rhys $
#include
participants (4)
-
Kim Kuen Tang
-
Rhys Ulerich
-
Rutger ter Borg
-
Steven Watanabe