diff --git a/doc/00_optional.qbk b/doc/00_optional.qbk index 093df84..2fa2357 100644 --- a/doc/00_optional.qbk +++ b/doc/00_optional.qbk @@ -101,5 +101,6 @@ This is how you solve it with `boost::optional`: [include 29_ref_optional_convenience.qbk] [endsect] [include 90_dependencies.qbk] -[include 91_relnotes.qbk] -[include 92_acknowledgments.qbk] +[include 91_comparison_with_std.qbk] +[include 92_relnotes.qbk] +[include 93_acknowledgments.qbk] diff --git a/doc/91_comparison_with_std.qbk b/doc/91_comparison_with_std.qbk new file mode 100644 index 0000000..5d631d6 --- /dev/null +++ b/doc/91_comparison_with_std.qbk @@ -0,0 +1,44 @@ +[/ + Boost.Optional + + Copyright (c) 2015 - 2024 Andrzej KrzemieĊ„ski + + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt) +] + + +[section:std_comp Comparison with `std::optional`] + +[table + [] + [ [[*`boost::opitonal`]] [[*`std::optional`]] [] ] + [ [`optional o = none;`] [`optional o = nullopt;`] [Different name for no-value tag.] ] + [ [`optional o {in_place_init, a, b};`] [`optional o {in_place, a, b};`] [Different name for in-place initialization tag.] ] + [ [] [`optional> o {in_place, {1, 2, 3}};`] [No in-place initialization with initializer-list in `boost`.] ] + [ [`optional o {in_place_init_if, cond, a, b};`] [] [No syntax for conditional in-place initialization in `std`.] ] + [ [`optional o {cond, x};`] [] [No syntax for conditional initialization from `T` in `std`.] ] + [ [`optional o {U{}};` + + `optional o {optional{}};`] [`optional o = U{};` + + `optional o = optional{}`] [Constructors form `U` and `optional` are explicit in `boost` and implicit in `std`.] ] + [ [`optional o;`] [] [No optional references in `std`.] ] + [ [] [`constexpr optional o;`] [No `constexpr` interface in `boost`.] ] + [ [`o.map(&f);` + + `o.flat_map(&of);` ] [`o.transform(&f);` + + `o.and_then(&of);`] [Different names and signatures for monadic interface functions. `boost` takes callbacks by value, `std` by universal reference.] ] + [ [] [`o.or_else(&of);`] [No `or_else` function in `boost`.] ] + [ [`o.value_or_eval(&f);`] [] [No `value_or_eval` function in `std`.] ] + [ [] [`optional{} == U{}`; + + `opitonal{} == opitonal{}`] [No comparisons with `U` or `optional` in `boost`.] ] + [ [`make_optional(cond, v);`] [] [No `make_optional` with condition in `std`.] ] + [ [] [`make_optional(a, b);`] [No `make_optional` with specified `T` in `boost`.] ] +] + + +[endsect][/ std_comp] diff --git a/doc/91_relnotes.qbk b/doc/92_relnotes.qbk similarity index 100% rename from doc/91_relnotes.qbk rename to doc/92_relnotes.qbk diff --git a/doc/92_acknowledgments.qbk b/doc/93_acknowledgments.qbk similarity index 100% rename from doc/92_acknowledgments.qbk rename to doc/93_acknowledgments.qbk