diff --git a/doc/27_ref_optional_synopsis.qbk b/doc/27_ref_optional_synopsis.qbk index d86967b..d0df811 100644 --- a/doc/27_ref_optional_synopsis.qbk +++ b/doc/27_ref_optional_synopsis.qbk @@ -16,10 +16,10 @@ namespace boost { class in_place_init_t { /* see below */ } ; ``[link reference_in_place_init __GO_TO__]`` - const in_place_init_t in_place_init ( /* see below */ ) ; + inline constexpr in_place_init_t in_place_init ( /* see below */ ) ; class in_place_init_if_t { /*see below*/ } ; ``[link reference_in_place_init_if __GO_TO__]`` - const in_place_init_if_t in_place_init_if ( /*see below*/ ) ; + inline constexpr in_place_init_if_t in_place_init_if ( /*see below*/ ) ; template class optional ; ``[link reference_operator_template __GO_TO__]`` diff --git a/doc/91_relnotes.qbk b/doc/91_relnotes.qbk index 8b1a9e8..ed16e73 100644 --- a/doc/91_relnotes.qbk +++ b/doc/91_relnotes.qbk @@ -17,6 +17,7 @@ * Dropped dependency on Boost.Utility. * Dropped dependency on Boost.Predef. * A bit faster implementation of some relational operations. +* Tags `in_place_init` and `in_place_init_if` become `inline constexpr` and therewith leave smaller footprint in the executable. This addresses [@https://github.com/boostorg/optional/issues/103 issue #103]. [heading Boost Release 1.85] diff --git a/include/boost/none.hpp b/include/boost/none.hpp index 5f927cc..3e7a950 100644 --- a/include/boost/none.hpp +++ b/include/boost/none.hpp @@ -50,7 +50,7 @@ namespace { #else -BOOST_INLINE_VARIABLE BOOST_CONSTEXPR_OR_CONST none_t none ((none_t::init_tag())); +BOOST_INLINE_CONSTEXPR none_t none ((none_t::init_tag())); #endif // older definitions diff --git a/include/boost/optional/optional.hpp b/include/boost/optional/optional.hpp index 6be4535..df3c8a3 100644 --- a/include/boost/optional/optional.hpp +++ b/include/boost/optional/optional.hpp @@ -103,17 +103,17 @@ namespace optional_ns { struct in_place_init_t { struct init_tag{}; - explicit in_place_init_t(init_tag){} + BOOST_CONSTEXPR explicit in_place_init_t(init_tag){} }; -const in_place_init_t in_place_init ((in_place_init_t::init_tag())); +BOOST_INLINE_CONSTEXPR in_place_init_t in_place_init ((in_place_init_t::init_tag())); // a tag for conditional in-place initialization of contained value struct in_place_init_if_t { struct init_tag{}; - explicit in_place_init_if_t(init_tag){} + BOOST_CONSTEXPR explicit in_place_init_if_t(init_tag){} }; -const in_place_init_if_t in_place_init_if ((in_place_init_if_t::init_tag())); +BOOST_INLINE_CONSTEXPR in_place_init_if_t in_place_init_if ((in_place_init_if_t::init_tag())); } // namespace optional_ns