【发布时间】:2012-05-28 12:36:57
【问题描述】:
我正在慢慢进入模板元编程,但我不确定如何实现以下内容:
// hpp file
enum MyEnum { Alive = 0, Dead };
class A {
public:
template<typename T, typename O, MyEnum ls>
static int Register();
};
// elsewhere in the code...
A::Register<IType1, Type1, Dead>();
在编译时,我会知道第三个模板类型是什么枚举值(编译时不变),要么死要么活。是否可以为 Register 函数定义两个主体,例如:
// desired hpp file
template<typename T, typename O, Alive>
int Register();
template<typename T, typename O, Dead>
int Register();
// corresponding desired .inc file
template<typename T, typename O, Alive>
int Register() { // Alive specific implementation ... }
template<typename T, typename O, Dead>
int Register() { // Dead specific implementation ... }
我看过: C++ Template Specialization with Constant Value
但我无法弄清楚如何使其适用于这种情况。
【问题讨论】:
标签: c++ templates metaprogramming compile-time-constant