首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从mpl::mpl::vector<>生成键的映射

从mpl::mpl::vector<>生成键的映射
EN

Stack Overflow用户
提问于 2017-06-22 22:16:44
回答 1查看 72关注 0票数 0

谁能告诉我为什么下面的断言失败了?

问题1:

代码语言:javascript
复制
   typedef mpl::map<mpl::pair<int, unsigned>, mpl::pair<char, unsigned char> > m;
   typedef mpl::fold<m, mpl::vector<>, mpl::push_back<mpl::_1, mpl::first<mpl::_2>>>::type keys; 
   BOOST_STATIC_ASSERT((std::is_same<boost::mpl::vector<int, char>, keys>::value == 1));

问题2:如果我想编写一个折叠函数来生成mpl::vector的mpl::vector,那么我应该如何编写它呢?

代码语言:javascript
复制
template <typename T>
pointer_type {
    typedef T*  pointer_type;
}
       typedef mpl::fold<m, mpl::vector<>, mpl::push_back<mpl::_1, pointer_type<mpl::first<mpl::_2>>>::type>::pointer_type
> keys; 

看起来不管用。mpl::_2永远不会求值。

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 23:27:44

与前C++11时代相比,mpl::vector是一种更方便的类型。mpl::push_back操作返回的不是这样的向量,而是一个无需可变模板即可增长的序列。

This小测试程序演示了返回的内容。

可以在this answer中找到详细的解释。

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

https://stackoverflow.com/questions/44702046

复制
相关文章

相似问题

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