Подтвердить что ты не робот

Являются ли члены класса "enum class" экземплярами немедленно или позже, когда они используются?

Рассмотрим этот

template<typename T>
struct A {
  enum class X {
    V = T()
  };
};

Для классов-членов и функций-членов С++ 11 (и С++ 03) не будет создавать свое определение, если мы не будем использовать их так, чтобы их определение. Это верно для enum class?

// valid?
A<std::string> a;

К сожалению, я не могу проверить компиляторы, так как С++ 11 находится только на пороге, и, похоже, все еще не надежно.

4b9b3361

Ответ 1

Я так думаю. 14.7.1/1

Неявное инстанцирование специализации шаблона шаблона вызывает неявное экземпляр деклараций, но не определений или аргументов по умолчанию, из [...] облачных перечислений участников