我有不同的向量如何 「串聯」 的boost :: MPL ::向量
mpl::vector<Type1, Type2...>
mpl::vector<Type3, Type4...>
我想 「串聯」 起來,形成:
mpl::vector<Type1, Type2, Type3, Type4...>
這將使我準備矢量模板並在之後重新使用它們。 我的問題有不同的解決方案,但這種方法似乎最適合我。
謝謝...
我有不同的向量如何 「串聯」 的boost :: MPL ::向量
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 ::複製,它採用MPL ::內部倍。
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>
>
));
謝謝你的回答,這個作品 – Kikosha
在線演示:http://coliru.stacked-crooked.com/a/50d3d9b6707cd457 –
工程就像魅力!它不會分解編譯所需的虛擬內存。非常感謝你! – Kikosha