| Home | Libraries | People | FAQ | More

### Release Notes

##### Boost Release X.XX

- Now `boost::optional` is specialized for reference parameters. This way the `sizeof` of optional reference is that of a pointer, and a number of bugs is avoided.

##### Boost Release 1.60

- Changed the implementation of `boost::none` again. Now it is a const object with internal linkage (as any other tag). This fixes Trac #11203.

##### Boost Release 1.59

- For C++03 compilers, added 0-argument overload for member function `emplace()`, and therewith removed the dependency on `<boost/utility/in_place_factory.hpp>`.
- Fixed Trac #11241.

##### Boost Release 1.58

- `boost::none_t` is no longer convertible from literal `0`. This avoids a bug where `optional<rational<int>> oi = 0;` would initialize an optional object with no contained value.
- Improved the trick that prevents streaming out `optional` without header `optional_io.hpp` by using safe-bool idiom. This addresses Trac #10825.
- IOStream operators are now mentioned in documentation.
- Added a way to manually disable move semantics: just define macro `BOOST_OPTIONAL_CONFIG_NO_RVALUE_REFERENCES`. This can be used to work around Trac #10399.
- It is no longer possible to assign `optional<U>` to `optional<T>` when `U` is not assignable or convertible to `T` (Trac #11087).
- Value accessors now work correctly on rvalues of `optional<T&>` (Trac #10839).

##### Boost Release 1.57

- Git pull #9: "Supply `<string>` to fix C++03 compile error on `logic_error("...")`".

##### Boost Release 1.56

- Added support for rvalue references. Now `optional<T>` works with moveable but non-copyable `T`'s,
- Improved `swap` (now uses move operations),
- Added function `emplace()`. This is the last of the requests from Trac #1841,
- `optional` is moveable, including conditional `noexcept` specifications, which make it `move_if_noexcept`-friendly,
- Using explicit operator bool() on platforms that support it (Trac #4227) (breaking change),
- Forward declaration of `operator<<(ostream&, optional const&)` to prevent inadvertent incorrect serialization of optional objects,
- Removed deprecated function `reset()` from examples (Trac #9005),
- Equality comparison with `boost::none` does not require that `T` be EqualityComparable,
- Optional rvalue references are explicitly disallowed,
- Binding temporaries to optional references is explicitly disallowed (breaking change),
- More ways to access the contained value, functions `value()`, `value_or()`, `value_or_eval()`,
- Updated and reorganized documentation, added tutorial and quick guide sections.