Создаются ли члены "enum class" сразу или позже при использовании? - PullRequest
12 голосов
/ 17 октября 2011

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

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

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

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

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

1 Ответ

10 голосов
/ 17 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...