考虑这一个
template<typename T>
struct A {
enum class X {
V = T()
};
};
对于成员类和成员函数,C ++ 11(和C ++ 03)将不会实例化它们的定义,除非我们以需要它们定义的方式使用它们。 enum class
这是真的吗?
// valid?
A<std::string> a;
不幸的是,我无法检查编译器,因为C ++ 11刚刚出门,但似乎一切都不可靠。
答案 0 :(得分:10)
我是这么认为的。 14.7.1 / 1
类模板特化的隐式实例化会导致隐式 [...]作用域成员枚举的声明实例化,但不包括定义或默认参数的实例化