我需要可以像这样使用的类似尾巴的功能:
boost::fusion::vector<char, int, float> a('a', 12, 5.5f);
boost::fusion::vector<int, float> b(12, 5.5f);
boost::fusion::copy( Tail(a), b );
答案 0 :(得分:1)
在Boost Fusion的文档中,算法下有一个称为 Transformation 的部分。这里列出的Functions特别包括一个称为pop_front
的std::list::pop_front
。这似乎完全符合我们的要求:
返回一个新序列,并删除原始序列的第一个元素。
...示例
assert(pop_front(make_vector(1,2,3)) == make_vector(2,3));
例如:
boost::fusion::vector<char, int, float> a('a', 12, 5.5f);
boost::fusion::vector<int, float> b(12, 5.5f);
boost::fusion::copy( boost::fusion::pop_front(a), b );
名称pop_front
有点奇怪,因为它实际上并没有修改输入序列,但是会返回修改后的结果。但是,pop_front
来自C ++标准库,用于删除集合中的第一个元素,例如{{3}}。 Boost Fusion选择此名称是为了与标准库“更一致”。