我定义了一个包含两个元素的向量。然后我push_back到它的另一个元素,并期望什么结果类型也是一个向量。但事实并非如此。
示例:
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 == falsehttp://liveworkspace.org/code/361492801eebe24cc5679a1e899a5240
我做错了什么?
致以问候。
发布于 2011-12-03 18:02:29
您已经将push_back本身别名为vec2。您需要使用
typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;但请记住,类型可能仍然是不同的,融合算法不需要保留类型(因为push_back函数应该返回惰性视图,所以vec2很可能是某种视图类型)。唯一的保证是vec2将是"A model of Forward Sequence."。
https://stackoverflow.com/questions/8366887
复制相似问题