1

我 typedef 一个带有两个元素的向量。然后我将另一个元素 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 == false

http://liveworkspace.org/code/361492801eebe24cc5679a1e899a5240

我究竟做错了什么?

问候。

4

1 回答 1

2

您已将push_back自身别名为vec2. 你需要使用

typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;

但请记住,类型可能仍然不同,Fusion 算法不需要保留类型(并且由于push_back函数应该返回惰性视图,因此vec2很可能是某种视图类型)。唯一的保证是vec2正向序列模型”。.

于 2011-12-03T10:02:28.670 回答