I have to different vectors
mpl::vector<Type1, Type2...>
mpl::vector<Type3, Type4...>
I'd like to "concatenate" them to form:
mpl::vector<Type1, Type2, Type3, Type4...>
This would allow me to prepare vector templates and reuse them afterwards. There are different solutions to my problem, but this approach seems most appropriate to me.
Thanks...
The libaray native supported function boost::mpl::joint_view is probably a better choice. It is optimized and lazy-evaluated.
http://www.boost.org/doc/libs/1_55_0/libs/mpl/doc/refmanual/joint-view.html
Like this:
// include the appropriate headers
typedef mpl::vector<Type1, Type2> first_type;
typedef mpl::vector<Type3, Type4> second_type;
typedef mpl::copy<first_type::type, mpl::back_inserter<second_type> >::type concat_type;
You can use mpl::copy, which uses mpl::fold internally.
typedef mpl::vector<T0, T1> s0;
typedef mpl::vector<T2, T3> s1;
typedef mpl::copy<
s1,
mpl::back_inserter<s0>
>::type concatenated;
BOOST_MPL_ASSERT((
mpl::equal<
concatenated,
mpl::vector<T0, T1, T2, T3>
>
));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With