我必须使用不同的向量
mpl::vector<Type1, Type2...>
mpl::vector<Type3, Type4...>
我想将它们“连接”起来形成:
mpl::vector<Type1, Type2, Type3, Type4...>
这将允许我准备矢量模板并在之后重用它们。我的问题有不同的解决方案,但这种方法似乎最适合我。
谢谢...
libaray 原生支持的函数 boost::mpl::joint_view 可能是更好的选择。它经过优化和惰性评估。
http://www.boost.org/doc/libs/1_55_0/libs/mpl/doc/refmanual/joint-view.html
像这样:
// 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;
您可以使用 mpl::copy,它在内部使用 mpl::fold。
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>
>
));