【发布时间】:2023-10-20 12:22:01
【问题描述】:
为什么下面的编译会以error: ‘arg’ cannot appear in a constant-expression 失败?
class Foo {
public:
enum myenum { BIRDY, NUMNUM };
typedef enum myenum myenum_t;
void bar(const myenum_t arg);
}
template<Foo::myenum_t> class MyClass {};
void Foo::bar(const myenum_t arg) {
MyClass<arg> hey;
}
枚举类型不是编译时常量吗?
【问题讨论】:
-
arg是运行时值。模板参数必须是 compile-time 构造。
标签: c++ templates enums constants