Теперь boost::факультативно специализирован для исходных параметров. Это касается нескольких вопросов:
размер факультативной ссылки - это указатель,
некоторые ошибки, связанные с копированием необязательных ссылок, исчезли,
все ошибки рабочего времени, вызванные неправильной ссылочной привязкой для некоторых компиляторов, теперь превращаются в ошибки компиляционного времени,
вы можете поменять необязательные ссылки: это как обменные указатели: теневые, лежащие в основе объекты не затронуты,
Сделал идеально-экспедитор SFINAE-дружественным, который фиксирует Trac #12002. Однако это работает только на новых платформах, которые правильно реализуют C++11 <type_traits>.
Для компиляторов C++03 добавлена 0-аргументная перегрузка для функции участника emplace(), и при этом устранена зависимость от <boost/utility/in_place_factory.hpp&;.
boost::none_t больше не конвертируется из литературного 0. Это позволяет избежать ошибки, когда Опционно<rational<int>oi=0; инициализирует необязательный объект без соответствующего значения.
Улучшен трюк, который предотвращает потоковую трансляцию Опционно без заголовка Option_io.hpp, используя безопасный-боловой идиом. Это адрес Трак #10825.
Операторы IOStream теперь упоминаются в документации.
Добавлен способ отключить семантику перемещения вручную: просто определите макро BOOST_OPTIONAL_CONFIG_NO_RVALUE_REFERENCES. Это может быть использовано для работы около Trac #10399.
Невозможно больше назначить Опционно<>U> на <T>, когда U не присваивается или конвертируется T (Trac #1087).
В настоящее время учредители ценностей работают правильно на r values of Option<T&> (Trac #10839).
Добавлена поддержка ссылок на rvalue. Теперь необязательно<T> работает с подвижным, но не копируемым T,
Улучшено swap (в настоящее время использует операции перемещения),
Добавленная функция emplace(). Это последний из запросов от Трак #1841,
опционно является подвижным, в том числе условно , не за исключением спецификаций, которые делают его move_if_no except-дружественным,
Использование явного операторского bool() на платформах, поддерживающих его (Trac #4227) (переключение),
Forward declaration of operator<<(ostream&,Optionconst&) для предотвращения непреднамеренной неправильной сериализации факультативных объектов,
Удаленная депрецированная функция перезагрузка() из примеров (Trac #9005),
Сравнение равенства с boost::none не требует, чтобы T было равенство Сопоставимые,
Факультативные ссылки на rvalue явно запрещены,
Привязка временных мер к факультативным ссылкам явно запрещена (смена изменения),
Больше способов получить доступ к содержащимся значениям, функциям value(), value_or(), value_or_eval(),
Обновленная и реорганизованная документация, дополнительные разделы учебников и быстрого руководства.
Статья Release Notes раздела Boost.Optional Boost.Optional может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.