Сегодня я заметил, что boost::optional::is_initialized()
помечен как устаревший в ссылке Boost 1.64.0. Мои проекты либерально разбрызгиваются is_initialized()
чтобы проверить, содержит ли boost::optional
значение.
Я не вижу другого способа правильно проверить, инициализирован ли boost::optional
, я что-то упустил?
У boost::optional
есть explicit operator bool()
, что означает, что я могу сделать if(foo){...}
если foo
- boost::optional
. Однако это приведет к неправильным результатам, если foo
является boost::optional<bool>
или некоторым другим boost::optional<T>
где T
можно конвертировать в bool
.
Что Boost ожидает от пользователей?