首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模板过载丢失时增加MPL?

在模板过载丢失时增加MPL?
EN

Stack Overflow用户
提问于 2013-07-08 21:27:53
回答 1查看 116关注 0票数 2

我正在尝试使用boost-mpl的映射容器进行基于策略的POC设计。(代码在这里)

我使用mpl::map传递策略,默认情况下它是空的:

代码语言:javascript
复制
typedef boost::mpl::map<> DefaultPolicy;

为了获得该策略,我尝试了以下方法:

代码语言:javascript
复制
typedef typename boost::mpl::at<TPolicy, LogPK, DefaultLogP>::type LoggingPolicy;

相反,我在g++ 4.81 (与clang++ 3.3对应的错误)中得到了以下错误:

main.cpp:49:61:错误:错误的模板参数(3,应该是2)类型名称boost::mpl::at::type LoggingPolicy;

boost文档提及是at模板的三个参数重载.它看起来好像不在#include <boost/mpl/at.hpp>。我甚至通过boost代码搜索了这个过载,但没有成功。我找到的唯一模板是一个有两个参数的模板。我在谷歌搜索这个问题时失败了(" at“太常见了)。

这是一个boost文档错误,还是有人知道如何使用这个mpl::at重载?

EN

回答 1

Stack Overflow用户

发布于 2013-08-30 23:37:49

只有2型的版本。不幸的是,这些文档是错误的,而且一直存在。但你也可以自己滚

代码语言:javascript
复制
template <typename Seq, typename Key, typename Def>
struct at_def
: mpl::eval_if<
    typename mpl::has_key<Seq, Key>::type,
    mpl::at<Seq, Key>,
    mpl::identity<Def>
    >
{ }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17536268

复制
相关文章

相似问题

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