91_relnotes.qbk 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. [/
  2. Boost.Optional
  3. Copyright (c) 2015 - 2018 Andrzej Krzemienski
  4. Distributed under the Boost Software License, Version 1.0.
  5. (See accompanying file LICENSE_1_0.txt or copy at
  6. http://www.boost.org/LICENSE_1_0.txt)
  7. ]
  8. [section:relnotes Release Notes]
  9. [heading Boost Release 1.69]
  10. * Remove deprecation mark from `reset()` method (without arguments).
  11. * Fixed [@https://github.com/boostorg/optional/issues/59 issue #59].
  12. * Fixed bug with initialization of certain wrapper types in clang with -std=c++03. See [@https://github.com/boostorg/optional/pull/64 pr #64].
  13. [heading Boost Release 1.68]
  14. * Added member function `has_value()` for compatibility with `std::optional` ([@https://github.com/boostorg/optional/issues/52 issue #52]).
  15. * Added member function `map()` for transforming `optional<T>` into `optional<U>` using a function of type `T -> U`.
  16. * Added member function `flat_map()` for transforming `optional<T>` into `optional<U>` using a function of type `T -> optonal<U>`.
  17. [heading Boost Release 1.67]
  18. * Fixed [@https://github.com/boostorg/optional/issues/46 issue #46].
  19. * Fixed `-Wzero-as-null-pointer-constant` warnings.
  20. [heading Boost Release 1.66]
  21. * On newer compilers `optional` is now trivially-copyable for scalar `T`s. This uses a different storage (just `T` rather than `aligned_storage`). We require the compiler to support defaulted functions.
  22. * Changed the implementation of `operator==` to get rid of the `-Wmaybe-uninitialized` false-positive warning from GCC.
  23. [heading Boost Release 1.63]
  24. * 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.
  25. * Syntax `o = {}` now correctly un-initializes optional, just like in `std::optional`.
  26. * Fixed [@https://svn.boost.org/trac/boost/ticket/12203 Trac #12203].
  27. * Fixed [@https://svn.boost.org/trac/boost/ticket/12563 Trac #12563].
  28. [heading Boost Release 1.62]
  29. * Fixed [@https://svn.boost.org/trac/boost/ticket/12179 Trac #12179].
  30. [heading Boost Release 1.61]
  31. * Now `boost::optional` is specialized for reference parameters. This addresses a couple of issues:
  32. * the `sizeof` of optional reference is that of a pointer,
  33. * some bugs connected to copying optional references are gone,
  34. * all run-time bugs caused by incorrect reference binding on some compilers are now turned into compile-time errors,
  35. * you can swap optional references: it is like swapping pointers: shalow, underlying objects are not affected,
  36. * optional references to abstract types work.
  37. * Documented nested typedefs ([@https://svn.boost.org/trac/boost/ticket/5193 Trac #5193]).
  38. * 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>`.
  39. * Fixed [@https://svn.boost.org/trac/boost/ticket/10445 Trac #10445].
  40. [heading Boost Release 1.60]
  41. * 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].
  42. [heading Boost Release 1.59]
  43. * For C++03 compilers, added 0-argument overload for member function `emplace()`, and therewith removed the dependency on `<boost/utility/in_place_factory.hpp>`.
  44. * Fixed [@https://svn.boost.org/trac/boost/ticket/11241 Trac #11241].
  45. [heading Boost Release 1.58]
  46. * `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.
  47. * 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].
  48. * IOStream operators are now mentioned in documentation.
  49. * 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].
  50. * 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]).
  51. * Value accessors now work correctly on rvalues of `optional<T&>` ([@https://svn.boost.org/trac/boost/ticket/10839 Trac #10839]).
  52. [heading Boost Release 1.57]
  53. * [@https://github.com/boostorg/optional/pull/9 Git pull #9]: ['"Supply `<string>` to fix C++03 compile error on `logic_error("...")`"].
  54. [heading Boost Release 1.56]
  55. * Added support for rvalue references. Now `optional<T>` works with moveable but non-copyable `T`'s,
  56. * Improved `swap` (now uses move operations),
  57. * Added function `emplace()`. This is the last of the requests from [@https://svn.boost.org/trac/boost/ticket/1841 Trac #1841],
  58. * `optional` is moveable, including conditional `noexcept` specifications, which make it `move_if_noexcept`-friendly,
  59. * Using explicit operator bool() on platforms that support it ([@https://svn.boost.org/trac/boost/ticket/4227 Trac #4227]) (breaking change),
  60. * Forward declaration of `operator<<(ostream&, optional const&)` to prevent inadvertent incorrect serialization of optional objects,
  61. * Removed deprecated function `reset()` from examples ([@https://svn.boost.org/trac/boost/ticket/9005 Trac #9005]),
  62. * Equality comparison with `boost::none` does not require that `T` be EqualityComparable,
  63. * Optional rvalue references are explicitly disallowed,
  64. * Binding temporaries to optional references is explicitly disallowed (breaking change),
  65. * More ways to access the contained value, functions `value()`, `value_or()`, `value_or_eval()`,
  66. * Updated and reorganized documentation, added tutorial and quick guide sections.
  67. [endsect][/ relnotes]