diff --git a/doc/html/index.html b/doc/html/index.html index 56ac700b..88c3b169 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -74,6 +74,8 @@ that allow use of C++14 features with C++11 or earlier compilers
Macros that describe C++17 features not supported
+
Macros + that allow use of C++17 features with C++14 or earlier compilers
Macros that describe features that have been removed from the standard.
Boost @@ -988,7 +990,7 @@ - +

Last revised: October 29, 2019 at 09:32:56 GMT

Last revised: October 29, 2019 at 16:54:06 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index fb95ed3a..c6b04b03 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -940,7 +940,7 @@ provide compliant C++14 support. [table [[Macro ][ Description ]] -[[`BOOST_CXX14_CONSTEXPR`][This macro works similar to BOOST_CONSTEXPR, but expands to `constexpr` only if the C++14 "relaxed" `constexpr` is available.]] +[[`BOOST_CXX14_CONSTEXPR`][This macro works similar to `BOOST_CONSTEXPR`, but expands to `constexpr` only if the C++14 "relaxed" `constexpr` is available.]] ] [endsect] @@ -959,7 +959,21 @@ that are not yet supported by a particular compiler or library. [[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]] [[`BOOST_NO_CXX17_ITERATOR_TRAITS`][The compiler does not support SFINAE-friendly `std::iterator_traits`.]] [[`BOOST_NO_CXX17_IF_CONSTEXPR`][The compiler does not support `if constexpr`.]] -[[`BOOST_NO_CXX17_INLINE_VARIABLES`][The compiler does not support C++17 inline variables.]] +[[`BOOST_NO_CXX17_INLINE_VARIABLES`][The compiler does not support `inline` variables.]] +] + +[endsect] + +[#config_17_for_14] + +[section Macros that allow use of C++17 features with C++14 or earlier compilers] + +The following macros allow use of C++17 features even with compilers that do not yet +provide compliant C++17 support. + +[table +[[Macro ][ Description ]] +[[`BOOST_INLINE_VARIABLE`][This macro expands to `inline` on compilers that support C++17 inline variables and to nothing otherwise. Users may need to check for `BOOST_NO_CXX17_INLINE_VARIABLES` for further adjustments to the code.]] ] [endsect] diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 3a5acc75..6daf8335 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -994,6 +994,15 @@ namespace std{ using ::type_info; } #define BOOST_CXX14_CONSTEXPR constexpr #endif +// +// C++17 inline variables +// +#if !defined(BOOST_NO_CXX17_INLINE_VARIABLES) +#define BOOST_INLINE_VARIABLE inline +#else +#define BOOST_INLINE_VARIABLE +#endif + // // Unused variable/typedef workarounds: //