В чем смысл объявления типов перечисления? Это сразу после названия перечисления? Я видел Standard С++ 14 (n4296) §3.3.2/3:
Точка объявления для перечисления сразу же после идентификатор (если таковой имеется) в его спецификаторе перечисления (7.2) или его первом opaque-enum-declaration (7.2), в зависимости от того, что наступит раньше.
Но когда я пытаюсь воспроизвести его,
template <class T>
struct CL
{
using UndType = int;
};
enum class E: CL<E>::UndType; //error: E is undefined
У меня есть ошибка для всех компиляторов, хотя enum-base для перечисления E
помещается после идентификатора и должна быть видимой.