Сегодня я заметил, что 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 ожидает от пользователей?