首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fusion::vector + fusion::push_back = fusion::vector?

fusion::vector + fusion::push_back = fusion::vector?
EN

Stack Overflow用户
提问于 2011-12-03 17:54:06
回答 1查看 579关注 0票数 1

我定义了一个包含两个元素的向量。然后我push_back到它的另一个元素,并期望什么结果类型也是一个向量。但事实并非如此。

示例:

代码语言:javascript
复制
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

我做错了什么?

致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-03 18:02:29

您已经将push_back本身别名为vec2。您需要使用

代码语言:javascript
复制
typedef boost::fusion::result_of::push_back<vec1, std::string>::type vec2;

但请记住,类型可能仍然是不同的,融合算法不需要保留类型(因为push_back函数应该返回惰性视图,所以vec2很可能是某种视图类型)。唯一的保证是vec2将是"A model of Forward Sequence."

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8366887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档