Cppreference声称,除其他外,您可以专门化
- 班级模板的成员枚举
由于未提供示例,因此我试图猜测如何做到这一点。
我最终得到以下内容:
template <typename T> struct A
{
enum E : int;
};
template <> enum A<int>::E : int {a,b,c};
Clang(带有-std=c++17 -pedantic-errors
的8.0.0)进行编译。
GCC(带有-std=c++17 -pedantic-errors
的9.1)拒绝使用
error: template specialization of 'enum A<int>::E' not allowed by ISO C++ [-Wpedantic]
MSVC(带有/std:c++latest
的v19.20也拒绝使用
error C3113: an 'enum' cannot be a template
我正确地专门化了枚举吗?如果没有,我现在可以这样做吗?
答案 0 :(得分:2)
the standard([temp.expl.spec] / 6)中有一些示例表明您所拥有的是正确的。有一个:
template<> enum A<int>::E : int { eint }; // OK
好像是gcc错误。