Установлен ли std :: optional в std :: nullopt, если он объявлен как локальная переменная и не инициализирован явно? - PullRequest
0 голосов
/ 04 августа 2020

Когда int объявлен локально (но не инициализирован и не назначен), он имеет неопределенное значение. Когда std::optional<int> объявляется локально без явной инициализации, применяется ли то же самое? Всегда ли это std::nullopt или неопределенное значение?

1 Ответ

3 голосов
/ 04 августа 2020

Из ссылки для std::optional конструкторов:

constexpr optional() noexcept;

constexpr optional( std::nullopt_t ) noexcept;

Создает объект, который не содержат значения.

Так что да, инициализированное по умолчанию std::optional не имеет значения, но оно не является неопределенным.

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