我很努力地学习 boost 融合,但我不清楚zip_view和zip函数的结果之间的区别。
namespace fuz = boost::fusion;
typedef fuz::vector<int,int> vec1;
typedef fuz::vector<char,char> vec2;
typedef fuz::vector<vec1&, vec2&> sequences;
typedef fuz::zip_view<sequences> zip_view_type;
typedef fuz::result_of::zip<vec1, vec2>::type zip_result_type;
BOOST_MPL_ASSERT((boost::is_same<zip_view_type, zip_result_type>));
查看何时/为什么使用 View 而不是函数。
最佳答案
希望我能回答您的第二个问题(为什么要使用zip_view
而不是zip
)。
问题在于zip
生成一个元组序列,其中包含对压缩序列的各个元素的常量引用。在您的示例中,它是vector2<const int&, const char&>
相反,由zip_view
为每个元素生成的元组中的引用与 View 构造函数中的压缩序列具有相同的const限定符。您的情况将是vector<int&, char&>
。
结果,zip_view
允许zip
不支持的内容: