如果存在一种类型,如何在编译时推断出两种类型共有的继承树的根?
我有一个问题,我需要发现两种类型(具有一个或零个基类)的共同祖先(如果存在)。是否可以构建一个类型特征来解决这个问题?在代码中: template st…
在编译时映射两种类型
我有一组与一对一关系相关的类型,例如: TypeA ---> Type1 TypeB ---> Type2 TypeC ---> Type3 我在编译时知道这些关系。 然后,我有一个依赖于这两…
是否可以在 OCaml 中进行编译时执行,类似于 C++模板元编程?
在 C++ 中,递归模板和常量值作为模板参数允许执行有趣的代码生成和编译时执行示例,例如 阶乘。 是否可以使用参数多态性、函子或其他概念在 OCaml 中…
Boost MPL:仅当(成员)函数存在时才调用它
我有一个类 A,它有一个模板参数 T。在某些用例中,类 T 提供了函数 func1(),而在某些用例中,类 T 不提供该函数。 A 中的函数 f() 应该调用 func1()…
针对一系列值的模板专门化
我希望编写一个模板结构 foo ,使得 foo::value_type 是最接近 N 大小的整数(向上舍入)。例如 foo::value_type => uint32_t,foo::value_type => ui…
使用 boost::mpl::for_each 类型包装器错误(Abrahams & Gurtovoy 书中的第 9.1.1 节)
以下代码几乎是从 David Abrahams 和 Beyond 所著的《C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond》一书…
从enable_if'd基继承
我试图部分专门化非字符数组的特征: template struct is_container : std::false_type {}; template struct is_container : std::enable_if::value, …
如何“取消引用类型”在C++03?
如何在 C++03 中获取另一种类型的“取消引用类型”?请注意,它可以是其他可取消引用的类型,例如 std::vector::iterator。 例如,如果我有 template …
这个元编程是如何编译的?
下面是来自维基百科的一个示例,显示了 C++ 模板元编程: template struct Factorial { enum { value = N * Factorial::value }; }; template <> stru…
在 C++ 中获取指针对于属于另一个具有多重继承的类的类
我有一些相互继承的类,但它们是使用模板来实现的。我想要的是有效地获取对基类之一的指针和/或引用,就好像它是依赖于模板的其他可能的派生类之一一…
从 iterator 获取 const_iterator
可能的重复: 从迭代器获取const_iterator 我想编写一个返回相应 const_iterator 的元函数来自 iterator 的 template struct get_const_iterator { t…
C++模板:如何确定类型是否适合子类化
假设我有一些取决于类型 T 的模板类。 T 几乎可以是任何内容:int、int*、pair 或 结构哈哈;但它不能是 void、引用或任何 cv 限定的内容。对于某些优…
如何确定编译器对元程序执行什么操作? (对于 boost.proto)
如何确定我的编译器 (g++) 对模板代码执行的操作? 我正在使用 boost.proto (表达式模板库)在编译时评估一些数学表达式。代码正确地计算了表达式,…