]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | [/ |
2 | Boost.Optional | |
3 | ||
4 | Copyright (c) 2015, 2016 Andrzej Krzemienski | |
5 | ||
6 | Distributed under the Boost Software License, Version 1.0. | |
7 | (See accompanying file LICENSE_1_0.txt or copy at | |
8 | http://www.boost.org/LICENSE_1_0.txt) | |
9 | ] | |
10 | ||
11 | ||
12 | [section:relnotes Release Notes] | |
13 | ||
14 | [heading Boost Release 1.63] | |
15 | * Added two new in-place constructors. They work similarly to `emplace()` functions: they initialize the contained value by perfect-forwarding the obtained arguments. One constructor always initializes the contained value, the other based on a boolean condition. | |
16 | * Fixed [@https://svn.boost.org/trac/boost/ticket/12203 Trac #12203]. | |
17 | ||
18 | ||
19 | [heading Boost Release 1.62] | |
20 | ||
21 | * Fixed [@https://svn.boost.org/trac/boost/ticket/12179 Trac #12179]. | |
22 | ||
23 | ||
24 | [heading Boost Release 1.61] | |
25 | ||
26 | * Now `boost::optional` is specialized for reference parameters. This addresses a couple of issues: | |
27 | * the `sizeof` of optional reference is that of a pointer, | |
28 | * some bugs connected to copying optional references are gone, | |
29 | * all run-time bugs caused by incorrect reference binding on some compilers are now turned into compile-time errors, | |
30 | * you can swap optional references: it is like swapping pointers: shalow, underlying objects are not affected, | |
31 | * optional references to abstract types work. | |
32 | * Documented nested typedefs ([@https://svn.boost.org/trac/boost/ticket/5193 Trac #5193]). | |
33 | * Made the perfect-forwarding constructor SFINAE-friendly, which fixes [@https://svn.boost.org/trac/boost/ticket/12002 Trac #12002]. However, this only works in the newer platforms that correctly implement C++11 `<type_traits>`. | |
34 | * Fixed [@https://svn.boost.org/trac/boost/ticket/10445 Trac #10445]. | |
35 | ||
36 | ||
37 | [heading Boost Release 1.60] | |
38 | ||
39 | * Changed the implementation of `boost::none` again. Now it is a const object with internal linkage (as any other tag). This fixes [@https://svn.boost.org/trac/boost/ticket/11203 Trac #11203]. | |
40 | ||
41 | ||
42 | [heading Boost Release 1.59] | |
43 | ||
44 | * For C++03 compilers, added 0-argument overload for member function `emplace()`, and therewith removed the dependency on `<boost/utility/in_place_factory.hpp>`. | |
45 | * Fixed [@https://svn.boost.org/trac/boost/ticket/11241 Trac #11241]. | |
46 | ||
47 | [heading Boost Release 1.58] | |
48 | ||
49 | * `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. | |
50 | * Improved the trick that prevents streaming out `optional` without header `optional_io.hpp` by using safe-bool idiom. This addresses [@https://svn.boost.org/trac/boost/ticket/10825 Trac #10825]. | |
51 | * IOStream operators are now mentioned in documentation. | |
52 | * Added a way to manually disable move semantics: just define macro `BOOST_OPTIONAL_CONFIG_NO_RVALUE_REFERENCES`. This can be used to work around [@https://svn.boost.org/trac/boost/ticket/10399 Trac #10399]. | |
53 | * It is no longer possible to assign `optional<U>` to `optional<T>` when `U` is not assignable or convertible to `T` ([@https://svn.boost.org/trac/boost/ticket/11087 Trac #11087]). | |
54 | * Value accessors now work correctly on rvalues of `optional<T&>` ([@https://svn.boost.org/trac/boost/ticket/10839 Trac #10839]). | |
55 | ||
56 | ||
57 | [heading Boost Release 1.57] | |
58 | ||
59 | * [@https://github.com/boostorg/optional/pull/9 Git pull #9]: ['"Supply `<string>` to fix C++03 compile error on `logic_error("...")`"]. | |
60 | ||
61 | ||
62 | [heading Boost Release 1.56] | |
63 | ||
64 | * Added support for rvalue references. Now `optional<T>` works with moveable but non-copyable `T`'s, | |
65 | * Improved `swap` (now uses move operations), | |
66 | * Added function `emplace()`. This is the last of the requests from [@https://svn.boost.org/trac/boost/ticket/1841 Trac #1841], | |
67 | * `optional` is moveable, including conditional `noexcept` specifications, which make it `move_if_noexcept`-friendly, | |
68 | * Using explicit operator bool() on platforms that support it ([@https://svn.boost.org/trac/boost/ticket/4227 Trac #4227]) (breaking change), | |
69 | * Forward declaration of `operator<<(ostream&, optional const&)` to prevent inadvertent incorrect serialization of optional objects, | |
70 | * Removed deprecated function `reset()` from examples ([@https://svn.boost.org/trac/boost/ticket/9005 Trac #9005]), | |
71 | * Equality comparison with `boost::none` does not require that `T` be EqualityComparable, | |
72 | * Optional rvalue references are explicitly disallowed, | |
73 | * Binding temporaries to optional references is explicitly disallowed (breaking change), | |
74 | * More ways to access the contained value, functions `value()`, `value_or()`, `value_or_eval()`, | |
75 | * Updated and reorganized documentation, added tutorial and quick guide sections. | |
76 | ||
77 | ||
78 | ||
79 | [endsect][/ relnotes] |