【发布时间】:2021-09-23 09:28:46
【问题描述】:
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' 不能是模板
我也从未在野外见过枚举模板,所以我认为这是不可能的。那么模板上下文中的“成员枚举”是什么意思呢?
【问题讨论】:
标签: c++ templates enums language-lawyer c++20