我输入一个包含两个元素的向量。然后我将其推入另一个元素并期望结果类型也是一个向量。但事实并非如此。
示例:
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
我做错了什么?
问候。
答案 0 :(得分:2)
您将push_back
本身别名为vec2
。你需要使用
typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;
但请记住,类型可能仍然不一样,Fusion算法不需要保留类型(因为push_back
函数应该返回一个惰性视图,然后vec2
将最有可能是一些视图类型)。唯一的保证是vec2
将为"A model of Forward Sequence."。