Cppreference утверждает, что, помимо прочего, вы можете специализировать
- перечисление члена шаблона класса
Поскольку примеров не было предоставлено, я попытался угадать, как это сделать.
Я получил следующее:
template <typename T> struct A
{
enum E : int;
};
template <> enum A<int>::E : int {a,b,c};
Clang (8.0.0 с -std=c++17 -pedantic-errors
) компилирует его.
GCC (9.1 с -std=c++17 -pedantic-errors
) отклоняет код с
error: template specialization of 'enum A<int>::E' not allowed by ISO C++ [-Wpedantic]
MSVC (v19.20 с /std:c++latest
также отклоняет код с
error C3113: an 'enum' cannot be a template
Попробуйте на gcc.godbolt.org
Правильно ли я специализировал enum? Если нет, то теперь я делаю это?