模板上下文中的成员枚举是什么



C++20标准(N4892(规定:

模板声明中的声明(如果有(应[…](2.2(--定义[…]成员枚举,[…]

(13.1.2(

在这种情况下,成员枚举是什么意思?我查阅了标准,但找不到这个术语的定义,只找到了它的用法。在13.9.2.3.(1/2(中,提到了作用域和非作用域成员枚举。所以我认为枚举就是这个意思。然而,我无法在MSVC:中创建成员枚举模板

struct S
{
template<typename T>
enum class e
{
i = 0,
};
};

C3113:"enum"不能是模板

我也从未在野外见过枚举模板,所以我认为这是不可能的。那么";成员枚举";在模板的上下文中?

但是,我无法在MSVC:中创建成员枚举模板

因为这不是故意的。现在现有的C++标准中没有枚举模板。考虑类模板的前向声明作用域成员枚举:

template <typename T>
class Foo { enum class bar; };
template <typename T>
enum class Foo<T>::bar { baz };

这是模板声明中的声明的一个例子,它是枚举的定义,这是[temp.pre]2.2所涵盖的用例的一个示例。

最新更新