+ The following macros describe features in the 2023 ISO C++ standard, formerly
+ known as C++2b, that are not yet supported by a particular compiler or library.
+
+
+
+
+
+
+
+
+
+ Macro
+
+
+
+
+ Description
+
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_EXPECTED
+
+
+
+
+ The compiler does not support the header <expected>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_FLAT_MAP
+
+
+
+
+ The compiler does not support the header <flat_map>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_FLAT_SET
+
+
+
+
+ The compiler does not support the header <flat_set>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_GENERATOR
+
+
+
+
+ The compiler does not support the header <generator>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_MDSPAN
+
+
+
+
+ The compiler does not support the header <mdspan>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_PRINT
+
+
+
+
+ The compiler does not support the header <print>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_SPANSTREAM
+
+
+
+
+ The compiler does not support the header <spanstream>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_STACKTRACE
+
+
+
+
+ The compiler does not support the header <stacktrace>.
+
+
+
+
+
+
+ BOOST_NO_CXX23_HDR_STDFLOAT
+
+
+
+
+ The compiler does not support the header <stdfloat>.
+
@@ -4656,12 +4797,12 @@
that is not otherwise described by one of the other Boost.Config
macros. To use the macro you must first
-
#include<boost/config/workaround.hpp>
+
#include<boost/config/workaround.hpp>
usage is then:
-
#ifBOOST_WORKAROUND(MACRONAME,CONDITION)
+
#ifBOOST_WORKAROUND(MACRONAME,CONDITION)// workaround code goes here...#else// Standard conforming code goes here...
@@ -4704,12 +4845,12 @@
in which case one can prevent the function being expanded as a
macro using:
-
The following also works in most, but not all, contexts:
-
(someclass.max)(arg1,arg2);
+
(someclass.max)(arg1,arg2);
@@ -4804,14 +4945,14 @@
gives us a convenient way to declare such constants. For example
instead of:
-
structfoo{
+
structfoo{staticconstintvalue=2;};
use:
-
structfoo{
+
structfoo{BOOST_STATIC_CONSTANT(int,value=2);};
@@ -4843,7 +4984,7 @@
The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
between switch labels:
-
switch(x){
+
switch(x){case40:case41:if(truth_is_out_there){
@@ -4901,7 +5042,7 @@
instantiations if some of the template parameters don't appear
in the function parameter list. For instance:
-
#include<iostream>
+
#include<iostream>#include<ostream>#include<typeinfo>
@@ -4925,7 +5066,7 @@
the problem without effects on the calling syntax. For instance,
in the case above write:
-
BOOST_DEPRECATED("Use bar() instead.")voidfoo();template<typenameT>
@@ -6926,7 +7067,7 @@
boundaries. For example, a header-only exception class might
look like this:
-
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index b9da79f0..80164e25 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -1073,6 +1073,26 @@ that are not yet supported by a particular compiler or library.
[endsect]
+[section Macros that describe C++23 features not supported]
+
+The following macros describe features in the 2023 ISO C++ standard, formerly known as C++2b,
+that are not yet supported by a particular compiler or library.
+
+[table
+[[Macro ][Description ]]
+[[`BOOST_NO_CXX23_HDR_EXPECTED`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_FLAT_MAP`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_FLAT_SET`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_GENERATOR`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_MDSPAN`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_PRINT`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_SPANSTREAM`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_STACKTRACE`][The compiler does not support the header ``.]]
+[[`BOOST_NO_CXX23_HDR_STDFLOAT`][The compiler does not support the header ``.]]
+]
+
+[endsect]
+
[section Macros that describe features that have been removed from the standard.]
The following macros describe features which were required by one version of the standard, but have been removed by later versions.
diff --git a/include/boost/config/assert_cxx23.hpp b/include/boost/config/assert_cxx23.hpp
new file mode 100644
index 00000000..0926b3b5
--- /dev/null
+++ b/include/boost/config/assert_cxx23.hpp
@@ -0,0 +1,41 @@
+// This file was automatically generated on Sat Sep 9 19:03:28 2023
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-21.
+// Use, modification and distribution are subject to 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)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
+#include
+#include
+
+#ifdef BOOST_NO_CXX23_HDR_EXPECTED
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_EXPECTED."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_FLAT_MAP
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_FLAT_MAP."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_FLAT_SET
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_FLAT_SET."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_GENERATOR
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_GENERATOR."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_MDSPAN
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_MDSPAN."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_PRINT
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_PRINT."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_SPANSTREAM
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_SPANSTREAM."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_STACKTRACE
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_STACKTRACE."
+#endif
+#ifdef BOOST_NO_CXX23_HDR_STDFLOAT
+# error "Your compiler appears not to be fully C++23 compliant. Detected via defect macro BOOST_NO_CXX23_HDR_STDFLOAT."
+#endif