-
13 votesanswersviews
变量模板别名作为模板参数(第2部分)
这是another question的后续行动 . 它指的是同样的问题(我希望),但使用一个完全不同的例子来说明它 . 原因是在前面的示例中,只有实验性GCC 4.9因编译器错误而失败 . 在此示例中,Clang和GCC 4.8.1也以不同方式失败:Clang产生意外结果,GCC 4.8.1报告不同的错误消息 . 上一个问题的答案或多或少地说代码是有效的,问题在于GCC的实验版本 . 但这个结果让... -
3 votesanswersviews
使用SFINAE检测实例方法constexpr
首先让我开始注意这里非常相似的问题:Detecting constexpr with SFINAE . 区别在于,在这个问题中,检测方法用于检测类的静态方法 . 我试图检测是否可以构造constexpr副本 . 我很亲密,这就是我所拥有的: template <class T> constexpr int return_int(T t) { return 0; } template... -
5 votesanswersviews
Constexpr decltype
我最近在这里问了一个问题(Detecting instance method constexpr with SFINAE),我试图在编译时进行一些constexpr检测 . 最后,我发现可以利用 noexcept 来做到这一点:任何常量表达式也是 noexcept . 所以我把以下机器放在一起: template <class T> constexpr int maybe_noexc... -
3 votesanswersviews
模糊元函数或未定义类型
我是metafunctions的新手 . 我想编写一个函数,用一些其他类型替换复合类型中某种类型的所有匹配项 . 例如: replace<void *, void, int>::type 应为 int * , replace<void, void, int>::type 应为 int 等 . 到目前为止我基本上失败了两种不同的方法: template < ... -
2 votesanswersviews
提升MPL递归元函数定义
我是MPL的初学者,所以我可能完全误解了如何使用它,但我已经尝试了所有我能想到的让这个工作 . 首先,我正在努力实现的目标 . 我有一堆形式的类: class X { typedef mpl::vector< D1,...,Dn > dependencies; ... } 其中n可以是0(无依赖性),Di也是相同形式的类 . 我的目标是定义一个元函数 template <... -
5 votesanswersviews
基于部分模板模板的专业化与显式部分模板专业化
给定一个模板,例如 foo : template<typename... ARGS> struct foo {}; 模板的两个部分特化 bar : template<template<typename...> class T , typename... ARGS> struct bar<T<ARGS...>> {}; template... -
2 votesanswersviews
boost :: mpl :: for_each的类型包装器错误(Abrahams&Gurtovoy书中的第9.1.1节)
以下代码几乎逐字逐句地复制自David Abrahams和Aleksey Gurtovoy撰写的C Template Metaprogramming:概念,工具和技术来自Boost and Beyond的第9.1.1节 . 唯一的变化是我希望能够使用常规的Boost模板mpl :: identity从书中更改类型包装器模板 . 但是,在Microsoft Visual C Express 2010... -
0 votesanswersviews
如何使用boost :: msm进行前向声明以避免循环依赖?
我试图用boost :: msm实现一个简单的协议 . 当数据包到达时,它们被处理并分派到状态机(SM)以进行相应的处理 . 我的pkt类(即Pkt1)需要fsm的句柄,允许它调用 fsm->process_event(...) (当然我会将 #include "myfsm.h" 添加到pkt1.h的顶部) . 到现在为止还挺好 . 但是,如果我的状态机(比如说State... -
1 votesanswersviews
通过将模板参数与字符串连接来生成C类型名称
我试图找出一种方法来使用Boost :: MPL生成一个typename,它是模板参数和字符串的串联 . 我有一对名为 X 和 XProvider 的类 . 后者是一个工厂类,它实例化从前一类继承的对象 . 模板类用于在运行时管理类型的实例化:除其他外,它包含unordered_map和其他一些misc . 成员 . 我最终想要实现的是一个看起来像这样的元函数: 鉴于上课 template <... -
1 votesanswersviews
如何在Boost.MPL中使用嵌套元函数?
我有一个简单的元函数: template <typename T> using is_const_lvalue_reference = mpl::and_< std::is_lvalue_reference<T>, std::is_const<typename std::remove_reference<T>::type> &g...