fusion::vector + fusion::push_back = fusion::vector?
fusion::vector + fusion::push_back = fusion::vector?
我定义了一个有两个元素的vector。然后我将另一个元素push_back放入其中,并期望结果类型也是vector。但事实并非如此。
的例子:
typedef boost::fusion::vector<int, double> vec1;
typedef boost::fusion::result_of::push_back<vec1, std::string> vec2;
//boost::is_same<vec2, boost::fusion::vector<int, double, std::string>>::value == false
http://liveworkspace.org/code/361492801eebe24cc5679a1e899a5240
我做错了什么?
问候。
您已将push_back
本身别名为vec2
。你需要使用
typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;
但是请记住,类型可能仍然不相同,Fusion算法不需要保留类型(并且由于push_back
函数应该返回一个惰性视图,那么vec2
将很可能是一些视图类型)。唯一的保证是vec2
将是"正向序列的一个模型"。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中用vector填充一个简单的动态数组
- vector.resize()中的分配错误
- 使用std::vector的OpenCL矩阵乘法
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 在某些循环内使用vector.push_back时出现分段错误
- 当vector是tje全局变量时,c++中vector的内存管理
- std::vector的包装器,使数组的结构看起来像结构的数组
- 为什么(-1)%vector::size()总是返回0
- 在C++中将类(带有Vector成员)保存为二进制文件
- 编译器如何区分std::vector的构造函数
- Casting boost::fusion::vector
- 如何返回 boost::fusion::vector<x,y,z> 元素以添加到 std::array<boost::fusion::vector<x,y,z>>?
- 传入一个函数,该函数递增 boost::fusion:vector 的元素
- 如何实例化没有默认构造函数的类型的 boost::fusion::vector 成员变量
- 为什么 boost::fusion::as_set 从 boost::fusion::vector 中删除重复项?
- 如何在运行时在boost::fusion::vector中查找元素
- fusion::vector + fusion::push_back = fusion::vector?
- 如何从精神语义规则绑定/调用存储在fusion::vector中的boost::函数
- 将boost::fusion::for_each应用于具有可变函数对象的boost::fusion::vector