summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-contrib <[email protected]>2022-09-21 13:56:33 +0300
committerrobot-contrib <[email protected]>2022-09-21 13:56:33 +0300
commit3c4e9491da8a5ee5d6aab7fd6511531cd6c83ca9 (patch)
tree05b5de849368df51bb91c6144cba01ceddf20e91
parent9e6e5a589e03344f0f03afeee39dbb214b6ddd11 (diff)
Update contrib/restricted/boost/config to 1.80.0
-rw-r--r--contrib/restricted/boost/config/CMakeLists.txt3
-rw-r--r--contrib/restricted/boost/config/README.md43
-rw-r--r--contrib/restricted/boost/config/include/boost/config/abi_prefix.hpp2
-rw-r--r--contrib/restricted/boost/config/include/boost/config/abi_suffix.hpp4
-rw-r--r--contrib/restricted/boost/config/include/boost/config/auto_link.hpp99
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp12
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp27
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/clang_version.hpp77
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp169
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/comeau.hpp2
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp48
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/cray.hpp425
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp7
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp48
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp5
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/greenhills.hpp2
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp3
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/intel.hpp14
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/kai.hpp2
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp7
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp7
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp9
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp5
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp5
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp7
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp44
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp10
-rw-r--r--contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp3
-rw-r--r--contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp6
-rw-r--r--contrib/restricted/boost/config/include/boost/config/detail/select_compiler_config.hpp3
-rw-r--r--contrib/restricted/boost/config/include/boost/config/detail/select_platform_config.hpp5
-rw-r--r--contrib/restricted/boost/config/include/boost/config/detail/select_stdlib_config.hpp15
-rw-r--r--contrib/restricted/boost/config/include/boost/config/detail/suffix.hpp77
-rw-r--r--contrib/restricted/boost/config/include/boost/config/platform/bsd.hpp13
-rw-r--r--contrib/restricted/boost/config/include/boost/config/platform/cygwin.hpp3
-rw-r--r--contrib/restricted/boost/config/include/boost/config/requires_threads.hpp2
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/dinkumware.hpp54
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/libcomo.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/libcpp.hpp46
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/libstdcpp3.hpp134
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/modena.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/msl.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/roguewave.hpp3
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/sgi.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/stlport.hpp11
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/vacpp.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp1
-rw-r--r--contrib/restricted/boost/config/include/boost/config/user.hpp4
-rw-r--r--contrib/restricted/boost/config/include/boost/config/workaround.hpp26
-rw-r--r--contrib/restricted/boost/config/include/boost/cstdint.hpp10
-rw-r--r--contrib/restricted/boost/config/include/boost/detail/workaround.hpp6
-rw-r--r--contrib/restricted/boost/config/include/boost/version.hpp4
52 files changed, 1293 insertions, 224 deletions
diff --git a/contrib/restricted/boost/config/CMakeLists.txt b/contrib/restricted/boost/config/CMakeLists.txt
index 905ca86bd75..84d7078ab96 100644
--- a/contrib/restricted/boost/config/CMakeLists.txt
+++ b/contrib/restricted/boost/config/CMakeLists.txt
@@ -8,6 +8,9 @@
add_library(restricted-boost-config INTERFACE)
+target_compile_options(restricted-boost-config INTERFACE
+ -DBOOST_ALL_NO_LIB
+)
target_include_directories(restricted-boost-config INTERFACE
${CMAKE_SOURCE_DIR}/contrib/restricted/boost/config/include
)
diff --git a/contrib/restricted/boost/config/README.md b/contrib/restricted/boost/config/README.md
new file mode 100644
index 00000000000..228b0962014
--- /dev/null
+++ b/contrib/restricted/boost/config/README.md
@@ -0,0 +1,43 @@
+Boost Config Library
+============================
+
+This library provides configuration support for the Boost C++ libraries.
+
+The full documentation is available on [boost.org](http://www.boost.org/doc/libs/release/libs/config/index.html).
+
+| | Master | Develop |
+|------------------|----------|-------------|
+| Drone | [![Build Status](https://drone.cpp.al/api/badges/boostorg/config/status.svg?ref=refs/heads/master)](https://drone.cpp.al/boostorg/config) | [![Build Status](https://drone.cpp.al/api/badges/boostorg/config/status.svg)](https://drone.cpp.al/boostorg/config) |
+| Travis | [![Build Status](https://travis-ci.org/boostorg/config.svg?branch=master)](https://travis-ci.org/boostorg/config) | [![Build Status](https://travis-ci.org/boostorg/config.png)](https://travis-ci.org/boostorg/config) |
+| Appveyor | [![Build status](https://ci.appveyor.com/api/projects/status/wo2n2mhoy8vegmuo/branch/master?svg=true)](https://ci.appveyor.com/project/jzmaddock/config/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/wo2n2mhoy8vegmuo/branch/develop?svg=true)](https://ci.appveyor.com/project/jzmaddock/config/branch/develop) |
+
+## Support, bugs and feature requests ##
+
+Bugs and feature requests can be reported through the [Gitub issue tracker](https://github.com/boostorg/config/issues)
+(see [open issues](https://github.com/boostorg/config/issues) and
+[closed issues](https://github.com/boostorg/config/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aclosed)).
+
+You can submit your changes through a [pull request](https://github.com/boostorg/config/pulls).
+
+There is no mailing-list specific to Boost Config, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [config].
+
+
+## Development ##
+
+Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
+
+ git clone https://github.com/boostorg/boost
+ cd boost
+ git submodule update --init
+
+The Boost Config Library is located in `libs/config/`.
+
+### Running tests ###
+First, make sure you are in `libs/config/test`.
+You can either run all the tests listed in `Jamfile.v2` or run a single test:
+
+ ../../../b2 <- run all tests
+ ../../../b2 config_info <- single test
+
+### For developers ###
+Please check the [Guidelines for Boost Authors](http://www.boost.org/doc/libs/release/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html). from the full documentation.
diff --git a/contrib/restricted/boost/config/include/boost/config/abi_prefix.hpp b/contrib/restricted/boost/config/include/boost/config/abi_prefix.hpp
index 3b1347492ca..bcdc26d9dc8 100644
--- a/contrib/restricted/boost/config/include/boost/config/abi_prefix.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/abi_prefix.hpp
@@ -19,7 +19,7 @@
# include BOOST_ABI_PREFIX
#endif
-#if defined( __BORLANDC__ )
+#if defined( BOOST_BORLANDC )
#pragma nopushoptwarn
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/abi_suffix.hpp b/contrib/restricted/boost/config/include/boost/config/abi_suffix.hpp
index 939161662ae..a1eb78db90a 100644
--- a/contrib/restricted/boost/config/include/boost/config/abi_suffix.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/abi_suffix.hpp
@@ -20,8 +20,6 @@
# include BOOST_ABI_SUFFIX
#endif
-#if defined( __BORLANDC__ )
+#if defined( BOOST_BORLANDC )
#pragma nopushoptwarn
#endif
-
-
diff --git a/contrib/restricted/boost/config/include/boost/config/auto_link.hpp b/contrib/restricted/boost/config/include/boost/config/auto_link.hpp
index 2b6be37f4ba..64dee1ef16f 100644
--- a/contrib/restricted/boost/config/include/boost/config/auto_link.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/auto_link.hpp
@@ -28,6 +28,9 @@ BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
This is essentially the same as the default name-mangled version, but without
the compiler name and version, or the Boost version. Just the build options.
+BOOST_AUTO_LINK_SYSTEM: Specifies that we link to libraries built with the --layout=system option.
+ This is essentially the same as the non-name-mangled version, but with
+ the prefix to differentiate static and dll builds
These macros will be undef'ed at the end of the header, further this header
has no include guards - so be sure to include it only once from your library!
@@ -48,6 +51,7 @@ BOOST_LIB_PREFIX
+ BOOST_LIB_ARCH_AND_MODEL_OPT
"-"
+ BOOST_LIB_VERSION
+ + BOOST_LIB_SUFFIX
These are defined as:
@@ -75,6 +79,7 @@ BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model
BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
+BOOST_LIB_SUFFIX: Static/import libraries extension (".lib", ".a") for the compiler.
***************************************************************************/
@@ -94,9 +99,11 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
// Only include what follows for known and supported compilers:
//
#if defined(BOOST_MSVC) \
- || defined(__BORLANDC__) \
+ || defined(BOOST_EMBTC_WINDOWS) \
+ || defined(BOOST_BORLANDC) \
|| (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
- || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
+ || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200)) \
+ || (defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4))
#ifndef BOOST_VERSION_HPP
# include <boost/version.hpp>
@@ -170,12 +177,27 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
// vc14:
# define BOOST_LIB_TOOLSET "vc140"
-# elif defined(BOOST_MSVC)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1920)
// vc14.1:
# define BOOST_LIB_TOOLSET "vc141"
-# elif defined(__BORLANDC__)
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1930)
+
+ // vc14.2:
+# define BOOST_LIB_TOOLSET "vc142"
+
+# elif defined(BOOST_MSVC)
+
+ // vc14.3:
+# define BOOST_LIB_TOOLSET "vc143"
+
+# elif defined(BOOST_EMBTC_WINDOWS)
+
+ // Embarcadero Clang based compilers:
+# define BOOST_LIB_TOOLSET "embtc"
+
+# elif defined(BOOST_BORLANDC)
// CBuilder 6:
# define BOOST_LIB_TOOLSET "bcb"
@@ -195,6 +217,11 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
// Metrowerks CodeWarrior 9.x
# define BOOST_LIB_TOOLSET "cw9"
+# elif defined(BOOST_CLANG) && defined(BOOST_WINDOWS) && defined(_MSC_VER) && (__clang_major__ >= 4)
+
+ // Clang on Windows
+# define BOOST_LIB_TOOLSET "clangw" BOOST_STRINGIZE(__clang_major__)
+
# endif
#endif // BOOST_LIB_TOOLSET
@@ -320,12 +347,32 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
# endif
-#elif defined(__BORLANDC__)
+#elif defined(BOOST_EMBTC_WINDOWS)
+
+# ifdef _RTLDLL
+
+# if defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-d"
+# else
+# define BOOST_LIB_RT_OPT
+# endif
+
+# else
+
+# if defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sd"
+# else
+# define BOOST_LIB_RT_OPT "-s"
+# endif
+
+# endif
+
+#elif defined(BOOST_BORLANDC)
//
// figure out whether we want the debug builds or not:
//
-#if __BORLANDC__ > 0x561
+#if BOOST_BORLANDC > 0x561
#pragma defineonoption BOOST_BORLAND_DEBUG -v
#endif
//
@@ -343,7 +390,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
# elif defined(BOOST_BORLAND_DEBUG)
# define BOOST_LIB_RT_OPT "-d"
# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
-# define BOOST_LIB_RT_OPT -y
+# define BOOST_LIB_RT_OPT "-y"
# else
# define BOOST_LIB_RT_OPT
# endif
@@ -401,27 +448,38 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
&& defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \
&& defined(BOOST_LIB_VERSION)
-/*#ifdef BOOST_AUTO_LINK_TAGGED
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
+#if defined(BOOST_EMBTC_WIN64)
+# define BOOST_LIB_SUFFIX ".a"
+#else
+# define BOOST_LIB_SUFFIX ".lib"
+#endif
+
+#ifdef BOOST_AUTO_LINK_NOMANGLE
+# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
+# endif
+#elif defined(BOOST_AUTO_LINK_TAGGED)
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX)
# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT BOOST_LIB_SUFFIX)
# endif
-#elif defined(BOOST_AUTO_LINK_NOMANGLE)
-# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+#elif defined(BOOST_AUTO_LINK_SYSTEM)
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_SUFFIX)
# endif
#elif defined(BOOST_LIB_BUILDID)
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX)
# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) BOOST_LIB_SUFFIX)
# endif
#else
-# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib")
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX)
# ifdef BOOST_LIB_DIAGNOSTIC
-# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib")
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION BOOST_LIB_SUFFIX)
# endif
-#endif*/
+#endif
#else
# error "some required macros where not defined (internal logic error)."
@@ -462,5 +520,6 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
#if defined(BOOST_DYN_LINK)
# undef BOOST_DYN_LINK
#endif
-
-
+#if defined(BOOST_LIB_SUFFIX)
+# undef BOOST_LIB_SUFFIX
+#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp
index 6190e390e6c..c5113b71510 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/borland.hpp
@@ -19,9 +19,9 @@
// last known compiler version:
#if (__BORLANDC__ > 0x613)
//# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
//# else
-//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+//# pragma message( "boost: Unknown compiler version - please run the configure tests and report the results")
//# endif
#elif (__BORLANDC__ == 0x600)
# error "CBuilderX preview compiler is no longer supported"
@@ -198,7 +198,9 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -239,6 +241,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#if __BORLANDC__ >= 0x590
# define BOOST_HAS_TR1_HASH
@@ -329,4 +334,5 @@
// (Niels Dekker, LKEB, April 2010)
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
+#define BOOST_BORLANDC __BORLANDC__
+#define BOOST_COMPILER "Classic Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp
index 6cd91c8a554..11eecce09bb 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/clang.hpp
@@ -57,6 +57,14 @@
# define BOOST_HAS_STDINT_H
#endif
+#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC)
+#if (__clang_major__ >= 4) && defined(__has_include)
+#if __has_include(<quadmath.h>)
+# define BOOST_HAS_FLOAT128
+#endif
+#endif
+#endif
+
#define BOOST_HAS_NRVO
@@ -106,13 +114,13 @@
# ifndef BOOST_SYMBOL_EXPORT
# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
# endif
-# ifndef BOOST_SYMBOL_EXPORT
+# ifndef BOOST_SYMBOL_VISIBLE
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+# endif
+# ifndef BOOST_SYMBOL_IMPORT
# define BOOST_SYMBOL_IMPORT
# endif
#endif
-#ifndef BOOST_SYMBOL_VISIBLE
-# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
-#endif
//
// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
@@ -248,6 +256,11 @@
#if !__has_feature(cxx_override_control)
# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_OVERRIDE
+#endif
+
+#if !__has_feature(cxx_unrestricted_unions)
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
#endif
#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
@@ -300,6 +313,10 @@
# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
// Clang 3.9+ in c++1z
#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
# define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -340,3 +357,5 @@
// Macro used to identify the Clang compiler.
#define BOOST_CLANG 1
+// BOOST_CLANG_VERSION
+#include <boost/config/compiler/clang_version.hpp>
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/clang_version.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/clang_version.hpp
new file mode 100644
index 00000000000..9e5b408ae02
--- /dev/null
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/clang_version.hpp
@@ -0,0 +1,77 @@
+// Copyright 2021 Peter Dimov
+// Distributed under the Boost Software License, Version 1.0.
+// https://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(__APPLE__)
+
+# define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
+
+#else
+# define BOOST_CLANG_REPORTED_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
+
+// https://en.wikipedia.org/wiki/Xcode#Toolchain_versions
+
+# if BOOST_CLANG_REPORTED_VERSION >= 130000
+# define BOOST_CLANG_VERSION 120000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 120005
+# define BOOST_CLANG_VERSION 110100
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 120000
+# define BOOST_CLANG_VERSION 100000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 110003
+# define BOOST_CLANG_VERSION 90000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 110000
+# define BOOST_CLANG_VERSION 80000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 100001
+# define BOOST_CLANG_VERSION 70000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 100000
+# define BOOST_CLANG_VERSION 60001
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 90100
+# define BOOST_CLANG_VERSION 50002
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 90000
+# define BOOST_CLANG_VERSION 40000
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 80000
+# define BOOST_CLANG_VERSION 30900
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 70300
+# define BOOST_CLANG_VERSION 30800
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 70000
+# define BOOST_CLANG_VERSION 30700
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 60100
+# define BOOST_CLANG_VERSION 30600
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 60000
+# define BOOST_CLANG_VERSION 30500
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 50100
+# define BOOST_CLANG_VERSION 30400
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 50000
+# define BOOST_CLANG_VERSION 30300
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 40200
+# define BOOST_CLANG_VERSION 30200
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 30100
+# define BOOST_CLANG_VERSION 30100
+
+# elif BOOST_CLANG_REPORTED_VERSION >= 20100
+# define BOOST_CLANG_VERSION 30000
+
+# else
+# define BOOST_CLANG_VERSION 20900
+
+# endif
+
+# undef BOOST_CLANG_REPORTED_VERSION
+#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp
index 44ca8428e47..77949aaf46c 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/codegear.hpp
@@ -9,6 +9,155 @@
// CodeGear C++ compiler setup:
+//
+// versions check:
+// last known and checked version is 0x740
+#if (__CODEGEARC__ > 0x740)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message( "boost: Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
+#ifdef __clang__ // Clang enhanced Windows compiler
+
+# include "clang.hpp"
+# define BOOST_NO_CXX11_THREAD_LOCAL
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+
+// This bug has been reported to Embarcadero
+
+#if defined(BOOST_HAS_INT128)
+#undef BOOST_HAS_INT128
+#endif
+#if defined(BOOST_HAS_FLOAT128)
+#undef BOOST_HAS_FLOAT128
+#endif
+
+// The clang-based compilers can not do 128 atomic exchanges
+
+#define BOOST_ATOMIC_NO_CMPXCHG16B
+
+// 32 functions are missing from the current RTL in cwchar, so it really can not be used even if it exists
+
+# define BOOST_NO_CWCHAR
+
+# ifndef __MT__ /* If compiling in single-threaded mode, assume there is no CXX11_HDR_ATOMIC */
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# endif
+
+/* temporarily disable this until we can link against fegetround fesetround feholdexcept */
+
+#define BOOST_NO_FENV_H
+
+/* Reported this bug to Embarcadero with the latest C++ Builder Rio release */
+
+#define BOOST_NO_CXX11_HDR_EXCEPTION
+
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+/*
+
+// On non-Win32 platforms let the platform config figure this out:
+#ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+#endif
+
+//
+// __int64:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+//
+
+*/
+
+// Specific settings for Embarcadero drivers
+# define BOOST_EMBTC __CODEGEARC__
+# define BOOST_EMBTC_FULL_VER ((__clang_major__ << 16) | \
+ (__clang_minor__ << 8) | \
+ __clang_patchlevel__ )
+
+// Detecting which Embarcadero driver is being used
+#if defined(BOOST_EMBTC)
+# if defined(_WIN64)
+# define BOOST_EMBTC_WIN64 1
+# define BOOST_EMBTC_WINDOWS 1
+# ifndef BOOST_USE_WINDOWS_H
+# define BOOST_USE_WINDOWS_H
+# endif
+# elif defined(_WIN32)
+# define BOOST_EMBTC_WIN32C 1
+# define BOOST_EMBTC_WINDOWS 1
+# ifndef BOOST_USE_WINDOWS_H
+# define BOOST_USE_WINDOWS_H
+# endif
+# elif defined(__APPLE__) && defined(__arm__)
+# define BOOST_EMBTC_IOSARM 1
+# define BOOST_EMBTC_IOS 1
+# elif defined(__APPLE__) && defined(__aarch64__)
+# define BOOST_EMBTC_IOSARM64 1
+# define BOOST_EMBTC_IOS 1
+# elif defined(__ANDROID__) && defined(__arm__)
+# define BOOST_EMBTC_AARM 1
+# define BOOST_EMBTC_ANDROID 1
+# elif
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown Embarcadero driver"
+# else
+# warning "Unknown Embarcadero driver"
+# endif /* defined(BOOST_ASSERT_CONFIG) */
+# endif
+#endif /* defined(BOOST_EMBTC) */
+
+#if defined(BOOST_EMBTC_WINDOWS)
+
+#if !defined(_chdir)
+#define _chdir(x) chdir(x)
+#endif
+
+#if !defined(_dup2)
+#define _dup2(x,y) dup2(x,y)
+#endif
+
+#endif
+
+# undef BOOST_COMPILER
+# define BOOST_COMPILER "Embarcadero-Clang C++ version " BOOST_STRINGIZE(__CODEGEARC__) " clang: " __clang_version__
+// # define __CODEGEARC_CLANG__ __CODEGEARC__
+// # define __EMBARCADERO_CLANG__ __CODEGEARC__
+// # define __BORLANDC_CLANG__ __BORLANDC__
+
+#else // #if !defined(__clang__)
+
+# define BOOST_CODEGEARC __CODEGEARC__
+# define BOOST_BORLANDC __BORLANDC__
+
#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
// these warnings occur frequently in optimized template code
# pragma warn -8004 // var assigned value, but never used
@@ -17,16 +166,6 @@
# pragma warn -8104 // static members with ctors not threadsafe
# pragma warn -8105 // reference member in class without ctors
#endif
-//
-// versions check:
-// last known and checked version is 0x621
-#if (__CODEGEARC__ > 0x621)
-# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
-# else
-# pragma message( "Unknown compiler version - please run the configure tests and report the results")
-# endif
-#endif
// CodeGear C++ Builder 2009
#if (__CODEGEARC__ <= 0x613)
@@ -78,6 +217,8 @@
# define BOOST_HAS_PRAGMA_ONCE
#endif
+#define BOOST_NO_FENV_H
+
//
// C++0x macros:
//
@@ -123,7 +264,10 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -167,6 +311,10 @@
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
//
// TR1 macros:
//
@@ -233,3 +381,4 @@
#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
+#endif // #if !defined(__clang__)
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/comeau.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/comeau.hpp
index 09841604f90..ca80fac37a2 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/comeau.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/comeau.hpp
@@ -50,7 +50,7 @@
// last known and checked version is 4245:
#if (__COMO_VERSION__ > 4245)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp
index d49ceb68e2b..7887b30a291 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/common_edg.hpp
@@ -77,37 +77,59 @@
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_CHAR16_T
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_DECLTYPE_N3276
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_LAMBDAS
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
#define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
#define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
#define BOOST_NO_CXX11_ALIGNAS
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
+
+//__cpp_decltype 200707 possibly?
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+
+#if !defined(__cpp_unicode_characters) || (__cpp_unicode_characters < 200704)
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+#if !defined(__cpp_unicode_literals) || (__cpp_unicode_literals < 200710)
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+#if !defined(__cpp_user_defined_literals) || (__cpp_user_defined_literals < 200809)
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#endif
+#if !defined(__cpp_variadic_templates) || (__cpp_variadic_templates < 200704)
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+#if !defined(__cpp_constexpr) || (__cpp_constexpr < 200907)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+#if !defined(__cpp_lambdas) || (__cpp_lambdas < 200907)
+# define BOOST_NO_CXX11_LAMBDAS
+#endif
+#if !defined(__cpp_range_based_for) || (__cpp_range_based_for < 200710)
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+#endif
+#if !defined(__cpp_raw_strings) || (__cpp_raw_strings < 200610)
+# define BOOST_NO_CXX11_RAW_LITERALS
+#endif
+
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -149,6 +171,10 @@
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
#ifdef c_plusplus
// EDG has "long long" in non-strict mode
// However, some libraries have insufficient "long long" support
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/cray.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/cray.hpp
index 5f810781701..2f1e9e8e184 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/cray.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/cray.hpp
@@ -1,68 +1,229 @@
-// (C) Copyright John Maddock 2011.
-// (C) Copyright Cray, Inc. 2013
+// Copyright 2011 John Maddock
+// Copyright 2013, 2017-2018 Cray, Inc.
// 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 for most recent version.
-// Greenhills C compiler setup:
+// Cray C++ compiler setup.
+//
+// There are a few parameters that affect the macros defined in this file:
+//
+// - What version of CCE (Cray Compiling Environment) are we running? This
+// comes from the '_RELEASE_MAJOR', '_RELEASE_MINOR', and
+// '_RELEASE_PATCHLEVEL' macros.
+// - What C++ standards conformance level are we using (e.g. '-h
+// std=c++14')? This comes from the '__cplusplus' macro.
+// - Are we using GCC extensions ('-h gnu' or '-h nognu')? If we have '-h
+// gnu' then CCE emulates GCC, and the macros '__GNUC__',
+// '__GNUC_MINOR__', and '__GNUC_PATCHLEVEL__' are defined.
+//
+// This file is organized as follows:
+//
+// - Verify that the combination of parameters listed above is supported.
+// If we have an unsupported combination, we abort with '#error'.
+// - Establish baseline values for all Boost macros.
+// - Apply changes to the baseline macros based on compiler version. These
+// changes are cummulative so each version section only describes the
+// changes since the previous version.
+// - Within each version section, we may also apply changes based on
+// other parameters (i.e. C++ standards conformance level and GCC
+// extensions).
+//
+// To test changes to this file:
+//
+// ```
+// module load cce/8.6.5 # Pick the version you want to test.
+// cd boost/libs/config/test/all
+// b2 -j 8 toolset=cray cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt
+// ```
+// Note: Using 'cxxstd-dialect=iso' is not supported at this time (the
+// tests run, but many tests fail).
+//
+// Note: 'linkflags=-lrt' is needed in Cray Linux Environment. Otherwise
+// you get an 'undefined reference to clock_gettime' error.
+//
+// Note: If a test '*_fail.cpp' file compiles, but fails to run, then it is
+// reported as a defect. However, this is not actually a defect. This is an
+// area where the test system is somewhat broken. Tests that are failing
+// because of this problem are noted in the comments.
+//
+// Pay attention to the macro definitions for the macros you wish to
+// modify. For example, only macros categorized as compiler macros should
+// appear in this file; platform macros should not appear in this file.
+// Also, some macros have to be defined to specific values; it is not
+// always enough to define or undefine a macro.
+//
+// Macro definitions are available in the source code at:
+//
+// `boost/libs/config/doc/html/boost_config/boost_macro_reference.html`
+//
+// Macro definitions are also available online at:
+//
+// http://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html
+//
+// Typically, if you enable a feature, and the tests pass, then you have
+// nothing to worry about. However, it's sometimes hard to figure out if a
+// disabled feature needs to stay disabled. To get a list of disabled
+// features, run 'b2' in 'boost/libs/config/checks'. These are the macros
+// you should pay attention to (in addition to macros that cause test
+// failures).
-#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
+////
+//// Front matter
+////
-#if _RELEASE_MAJOR < 8
-# error "Boost is not configured for Cray compilers prior to version 8, please try the configure script."
+// In a developer build of the Cray compiler (i.e. a compiler built by a
+// Cray employee), the release patch level is reported as "x". This gives
+// versions that look like e.g. "8.6.x".
+//
+// To accomplish this, the the Cray compiler preprocessor inserts:
+//
+// #define _RELEASE_PATCHLEVEL x
+//
+// If we are using a developer build of the compiler, we want to use the
+// configuration macros for the most recent patch level of the release. To
+// accomplish this, we'll pretend that _RELEASE_PATCHLEVEL is 99.
+//
+// However, it's difficult to detect if _RELEASE_PATCHLEVEL is x. We must
+// consider that the x will be expanded if x is defined as a macro
+// elsewhere. For example, imagine if someone put "-D x=3" on the command
+// line, and _RELEASE_PATCHLEVEL is x. Then _RELEASE_PATCHLEVEL would
+// expand to 3, and we could not distinguish it from an actual
+// _RELEASE_PATCHLEVEL of 3. This problem only affects developer builds; in
+// production builds, _RELEASE_PATCHLEVEL is always an integer.
+//
+// IMPORTANT: In developer builds, if x is defined as a macro, you will get
+// an incorrect configuration. The behavior in this case is undefined.
+//
+// Even if x is not defined, we have to use some trickery to detect if
+// _RELEASE_PATCHLEVEL is x. First we define BOOST_CRAY_x to some arbitrary
+// magic value, 9867657. Then we use BOOST_CRAY_APPEND to append the
+// expanded value of _RELEASE_PATCHLEVEL to the string "BOOST_CRAY_".
+//
+// - If _RELEASE_PATCHLEVEL is undefined, we get "BOOST_CRAY_".
+// - If _RELEASE_PATCHLEVEL is 5, we get "BOOST_CRAY_5".
+// - If _RELEASE_PATCHLEVEL is x (and x is not defined) we get
+// "BOOST_CRAY_x":
+//
+// Then we check if BOOST_CRAY_x is equal to the output of
+// BOOST_CRAY_APPEND. In other words, the output of BOOST_CRAY_APPEND is
+// treated as a macro name, and expanded again. If we can safely assume
+// that BOOST_CRAY_ is not a macro defined as our magic number, and
+// BOOST_CRAY_5 is not a macro defined as our magic number, then the only
+// way the equality test can pass is if _RELEASE_PATCHLEVEL expands to x.
+//
+// So, that is how we detect if we are using a developer build of the Cray
+// compiler.
+
+#define BOOST_CRAY_x 9867657 // Arbitrary number
+#define BOOST_CRAY_APPEND(MACRO) BOOST_CRAY_APPEND_INTERNAL(MACRO)
+#define BOOST_CRAY_APPEND_INTERNAL(MACRO) BOOST_CRAY_##MACRO
+
+#if BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL)
+
+ // This is a developer build.
+ //
+ // - _RELEASE_PATCHLEVEL is defined as x, and x is not defined as a macro.
+
+ // Pretend _RELEASE_PATCHLEVEL is 99, so we get the configuration for the
+ // most recent patch level in this release.
+
+ #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + 99)
+
+#else
+
+ // This is a production build.
+ //
+ // _RELEASE_PATCHLEVEL is not defined as x, or x is defined as a macro.
+
+ #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL)
+
+#endif // BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL)
+
+#undef BOOST_CRAY_APPEND_INTERNAL
+#undef BOOST_CRAY_APPEND
+#undef BOOST_CRAY_x
+
+
+#ifdef __GNUC__
+# define BOOST_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL)
+#endif
+
+// Since the Cray compiler defines '__GNUC__', we have to emulate some
+// additional GCC macros in order to make everything work.
//
-// Check this is a recent EDG based compiler, otherwise we don't support it here:
-//
-#ifndef __EDG_VERSION__
+// FIXME: Perhaps Cray should fix the compiler to define these additional
+// macros for GCC emulation?
+
+#if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define __GXX_EXPERIMENTAL_CXX0X__ 1
+#endif
+
+////
+//// Parameter validation
+////
+
+// FIXME: Do we really need to support compilers before 8.5? Do they pass
+// the Boost.Config tests?
+
+#if BOOST_CRAY_VERSION < 80000
+# error "Boost is not configured for Cray compilers prior to version 8, please try the configure script."
+#endif
+
+// We only support recent EDG based compilers.
+
+#ifndef __EDG__
# error "Unsupported Cray compiler, please try running the configure script."
#endif
-#if _RELEASE_MINOR < 5 || __cplusplus < 201100
+////
+//// Baseline values
+////
+
#include <boost/config/compiler/common_edg.hpp>
-//
-//
-#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_HAS_NRVO
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_HAS_NRVO
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_HAS_NRVO
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_CXX11_SFINAE_EXPR
-#define BOOST_NO_CXX11_SCOPED_ENUMS
-#define BOOST_NO_CXX11_RVALUE_REFERENCES
-#define BOOST_NO_CXX11_RANGE_BASED_FOR
-#define BOOST_NO_CXX11_RAW_LITERALS
-#define BOOST_NO_CXX11_NULLPTR
-#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
#define BOOST_NO_CXX11_LAMBDAS
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
-#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_CXX11_DELETED_FUNCTIONS
-#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
-#define BOOST_NO_CXX11_DECLTYPE_N3276
-#define BOOST_NO_CXX11_DECLTYPE
-#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
-#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
-#define BOOST_NO_CXX11_CHAR32_T
-#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
#define BOOST_NO_CXX11_REF_QUALIFIERS
-#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_THREAD_LOCAL
-
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
#define BOOST_MATH_DISABLE_STD_FPCLASSIFY
@@ -71,15 +232,15 @@
#define BOOST_SP_USE_PTHREADS
#define BOOST_AC_USE_PTHREADS
-/* everything that follows is working around what are thought to be
- * compiler shortcomings. Revist all of these regularly.
- */
+//
+// Everything that follows is working around what are thought to be
+// compiler shortcomings. Revist all of these regularly.
+//
//#define BOOST_USE_ENUM_STATIC_ASSERT
//#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS //(this may be implied by the previous #define
-// These constants should be provided by the
-// compiler, at least when -hgnu is asserted on the command line.
+// These constants should be provided by the compiler.
#ifndef __ATOMIC_RELAXED
#define __ATOMIC_RELAXED 0
@@ -90,7 +251,57 @@
#define __ATOMIC_SEQ_CST 5
#endif
-#else /* _RELEASE_MINOR */
+////
+//// Version changes
+////
+
+//
+// 8.5.0
+//
+
+#if BOOST_CRAY_VERSION >= 80500
+
+#if __cplusplus >= 201103L
+
+#undef BOOST_HAS_NRVO
+#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
+#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#undef BOOST_NO_CXX11_CHAR16_T
+#undef BOOST_NO_CXX11_CHAR32_T
+#undef BOOST_NO_CXX11_CONSTEXPR
+#undef BOOST_NO_CXX11_DECLTYPE
+#undef BOOST_NO_CXX11_DECLTYPE_N3276
+#undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#undef BOOST_NO_CXX11_DELETED_FUNCTIONS
+#undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#undef BOOST_NO_CXX11_FINAL
+#undef BOOST_NO_CXX11_OVERRIDE
+#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#undef BOOST_NO_CXX11_LAMBDAS
+#undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#undef BOOST_NO_CXX11_NOEXCEPT
+#undef BOOST_NO_CXX11_NULLPTR
+#undef BOOST_NO_CXX11_RANGE_BASED_FOR
+#undef BOOST_NO_CXX11_RAW_LITERALS
+#undef BOOST_NO_CXX11_REF_QUALIFIERS
+#undef BOOST_NO_CXX11_RVALUE_REFERENCES
+#undef BOOST_NO_CXX11_SCOPED_ENUMS
+#undef BOOST_NO_CXX11_SFINAE_EXPR
+#undef BOOST_NO_CXX11_STATIC_ASSERT
+#undef BOOST_NO_CXX11_TEMPLATE_ALIASES
+#undef BOOST_NO_CXX11_THREAD_LOCAL
+#undef BOOST_NO_CXX11_UNICODE_LITERALS
+#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#undef BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#undef BOOST_NO_CXX11_VARIADIC_MACROS
+#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#undef BOOST_NO_CXX11_UNRESTRICTED_UNION
+#undef BOOST_NO_SFINAE_EXPR
+#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#undef BOOST_MATH_DISABLE_STD_FPCLASSIFY
+#undef BOOST_SP_USE_PTHREADS
+#undef BOOST_AC_USE_PTHREADS
#define BOOST_HAS_VARIADIC_TMPL
#define BOOST_HAS_UNISTD_H
@@ -114,11 +325,121 @@
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_FLOAT128
-#if __cplusplus < 201400
+#if __cplusplus < 201402L
#define BOOST_NO_CXX11_DECLTYPE_N3276
-#endif /* __cpluspus */
+#endif // __cplusplus < 201402L
+
+#endif // __cplusplus >= 201103L
+
+#endif // BOOST_CRAY_VERSION >= 80500
+
+//
+// 8.6.4
+// (versions prior to 8.6.5 do not define _RELEASE_PATCHLEVEL)
+//
+
+#if BOOST_CRAY_VERSION >= 80600
+
+#if __cplusplus >= 199711L
+#define BOOST_HAS_FLOAT128
+#define BOOST_HAS_PTHREAD_YIELD // This is a platform macro, but it improves test results.
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run.
+#undef BOOST_NO_CXX11_CHAR16_T
+#undef BOOST_NO_CXX11_CHAR32_T
+#undef BOOST_NO_CXX11_INLINE_NAMESPACES
+#undef BOOST_NO_CXX11_FINAL
+#undef BOOST_NO_CXX11_OVERRIDE
+#undef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_SFINAE_EXPR // This is correct, even though '*_fail.cpp' test fails.
+#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#undef BOOST_NO_CXX11_VARIADIC_MACROS
+#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+// 'BOOST_NO_DEDUCED_TYPENAME' test is broken. The test files are enabled /
+// disabled with an '#ifdef BOOST_DEDUCED_TYPENAME'. However,
+// 'boost/libs/config/include/boost/config/detail/suffix.hpp' ensures that
+// 'BOOST_DEDUCED_TYPENAME' is always defined (the value it is defined as
+// depends on 'BOOST_NO_DEDUCED_TYPENAME'). So, modifying
+// 'BOOST_NO_DEDUCED_TYPENAME' has no effect on which tests are run.
+//
+// The 'no_ded_typename_pass.cpp' test should always compile and run
+// successfully, because 'BOOST_DEDUCED_TYPENAME' must always have an
+// appropriate value (it's not just something that you turn on or off).
+// Therefore, if you wish to test changes to 'BOOST_NO_DEDUCED_TYPENAME',
+// you have to modify 'no_ded_typename_pass.cpp' to unconditionally include
+// 'boost_no_ded_typename.ipp'.
+#undef BOOST_NO_DEDUCED_TYPENAME // This is correct. Test is broken.
+#undef BOOST_NO_SFINAE_EXPR
+#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#undef BOOST_NO_CXX11_ALIGNAS
+#undef BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_HDR_ATOMIC
+#undef BOOST_NO_CXX11_HDR_FUNCTIONAL
+#define BOOST_NO_CXX11_HDR_REGEX // This is correct. Test compiles, but fails to run.
+#undef BOOST_NO_CXX11_SFINAE_EXPR
+#undef BOOST_NO_CXX11_SMART_PTR
+#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#undef BOOST_NO_CXX14_CONSTEXPR
+#define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#endif // __cplusplus == 201402L
+
+#endif // BOOST_CRAY_VERSION >= 80600
+
+//
+// 8.6.5
+// (no change from 8.6.4)
+//
+
+//
+// 8.7.0
+//
+
+#if BOOST_CRAY_VERSION >= 80700
+
+#if __cplusplus >= 199711L
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#undef BOOST_NO_CXX11_HDR_ATOMIC
+#undef BOOST_NO_CXX11_HDR_REGEX
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#endif // __cplusplus == 201402L
+
+#endif // BOOST_CRAY_VERSION >= 80700
+
+//
+// Next release
+//
+
+#if BOOST_CRAY_VERSION > 80799
+
+#if __cplusplus >= 199711L
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#endif // __cplusplus == 201402L
-#endif /* _RELEASE_MINOR */
+#endif // BOOST_CRAY_VERSION > 80799
+////
+//// Remove temporary macros
+////
+// I've commented out some '#undef' statements to signify that we purposely
+// want to keep certain macros.
+//#undef __GXX_EXPERIMENTAL_CXX0X__
+//#undef BOOST_COMPILER
+#undef BOOST_GCC_VERSION
+#undef BOOST_CRAY_VERSION
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp
index e4c5afddd2d..7641ee8a6d7 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/digitalmars.hpp
@@ -83,7 +83,9 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -124,6 +126,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#if (__DMC__ <= 0x840)
#error "Compiler not supported or configured - please reconfigure"
@@ -132,6 +137,6 @@
// last known and checked version is ...:
#if (__DMC__ > 0x848)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp
index 42e59e08c10..d4cf0e9c884 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/gcc.hpp
@@ -107,16 +107,10 @@
# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
# else
-# ifndef BOOST_SYMBOL_EXPORT
-# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
-# endif
-# ifndef BOOST_SYMBOL_IMPORT
-# define BOOST_SYMBOL_IMPORT
-# endif
-# endif
-# ifndef BOOST_SYMBOL_VISIBLE
-# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_IMPORT
# endif
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
#else
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
# define BOOST_SYMBOL_EXPORT
@@ -238,7 +232,6 @@
// C++0x features in 4.6.n and later
//
#if (BOOST_GCC_VERSION < 40600) || !defined(BOOST_GCC_CXX11)
-#define BOOST_NO_CXX11_CONSTEXPR
#define BOOST_NO_CXX11_DEFAULTED_MOVES
#define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_NULLPTR
@@ -249,16 +242,19 @@
// C++0x features in 4.7.n and later
//
#if (BOOST_GCC_VERSION < 40700) || !defined(BOOST_GCC_CXX11)
+// Note that while constexpr is partly supported in gcc-4.6 it's a
+// pre-std version with several bugs:
+# define BOOST_NO_CXX11_CONSTEXPR
# define BOOST_NO_CXX11_FINAL
# define BOOST_NO_CXX11_TEMPLATE_ALIASES
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+# define BOOST_NO_CXX11_OVERRIDE
#endif
// C++0x features in 4.8.n and later
//
#if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11)
-# define BOOST_NO_CXX11_ALIGNAS
# define BOOST_NO_CXX11_THREAD_LOCAL
# define BOOST_NO_CXX11_SFINAE_EXPR
#endif
@@ -271,6 +267,20 @@
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
+// C++0x features in 4.9.n and later
+//
+#if (BOOST_GCC_VERSION < 40900) || !defined(BOOST_GCC_CXX11)
+// Although alignas support is added in gcc 4.8, it does not accept
+// dependent constant expressions as an argument until gcc 4.9.
+# define BOOST_NO_CXX11_ALIGNAS
+#endif
+
+// C++0x features in 5.1 and later
+//
+#if (BOOST_GCC_VERSION < 50100) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
+#endif
+
// C++14 features in 4.9.0 and later
//
#if (BOOST_GCC_VERSION < 40900) || (__cplusplus < 201300)
@@ -305,14 +315,18 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#if __GNUC__ >= 7
# define BOOST_FALLTHROUGH __attribute__((fallthrough))
#endif
-#ifdef __MINGW32__
-// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see
+#if (__GNUC__ < 11) && defined(__MINGW32__) && !defined(__MINGW64__)
+// thread_local was broken on mingw for all 32bit compiler releases prior to 11.x, see
// https://sourceforge.net/p/mingw-w64/bugs/527/
+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83562
// Not setting this causes program termination on thread exit.
#define BOOST_NO_CXX11_THREAD_LOCAL
#endif
@@ -328,7 +342,7 @@
//
// __builtin_unreachable:
-#if BOOST_GCC_VERSION >= 40800
+#if BOOST_GCC_VERSION >= 40500
#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
#endif
@@ -349,14 +363,14 @@
# error "Compiler not configured - please reconfigure"
#endif
//
-// last known and checked version is 7.1:
-#if (BOOST_GCC_VERSION > 70100)
+// last known and checked version is 8.1:
+#if (BOOST_GCC_VERSION > 80100)
# if defined(BOOST_ASSERT_CONFIG)
# error "Boost.Config is older than your compiler - please check for an updated Boost release."
# else
// we don't emit warnings here anymore since there are no defect macros defined for
// gcc post 3.4, so any failures are gcc regressions...
-//# warning "Unknown compiler version - please run the configure tests and report the results"
+//# warning "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp
index 2b47585ab86..fd6896a8119 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/gcc_xml.hpp
@@ -61,7 +61,9 @@
# define BOOST_NO_CXX11_INLINE_NAMESPACES
# define BOOST_NO_CXX11_REF_QUALIFIERS
# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_OVERRIDE
# define BOOST_NO_CXX11_THREAD_LOCAL
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -102,6 +104,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/greenhills.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/greenhills.hpp
index a76a07cf4a6..39112c2c1cf 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/greenhills.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/greenhills.hpp
@@ -21,7 +21,7 @@
// last known and checked version is 0:
#if (__ghs > 0)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp
index 9df18eaf672..cf5667b5200 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/hp_acc.hpp
@@ -125,6 +125,7 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
/*
See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
@@ -142,6 +143,6 @@
// last known and checked version for PA-RISC is 38000
#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/intel.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/intel.hpp
index 0eea05b9166..9a06d2fe3d1 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/intel.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/intel.hpp
@@ -46,12 +46,17 @@
#undef BOOST_GCC_VERSION
#undef BOOST_GCC_CXX11
#undef BOOST_GCC
+#undef BOOST_FALLTHROUGH
// Broken in all versions up to 17 (newer versions not tested)
#if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
+#if (__INTEL_COMPILER >= 1800) && (__cplusplus >= 201703)
+# define BOOST_FALLTHROUGH [[fallthrough]]
+#endif
+
#endif // defined(_MSC_VER)
#undef BOOST_COMPILER
@@ -496,8 +501,15 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
#endif
// BOOST_NO_CXX11_FINAL
+// BOOST_NO_CXX11_OVERRIDE
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
# undef BOOST_NO_CXX11_FINAL
+# undef BOOST_NO_CXX11_OVERRIDE
+#endif
+
+// BOOST_NO_CXX11_UNRESTRICTED_UNION
+#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 50100)) && (!defined(_MSC_VER))
+# undef BOOST_NO_CXX11_UNRESTRICTED_UNION
#endif
#endif // defined(BOOST_INTEL_STDCXX0X)
@@ -558,7 +570,7 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
// We don't emit this warning any more, since we have so few
// defect macros set anyway (just the one).
//
-//# pragma message("Unknown compiler version - please run the configure tests and report the results")
+//# pragma message("boost: Unknown compiler version - please run the configure tests and report the results")
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/kai.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/kai.hpp
index 960d501c860..0b22ec1d6c5 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/kai.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/kai.hpp
@@ -25,7 +25,7 @@
// last known and checked version is 4001:
#if (__KCC_VERSION > 4001)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp
index 99ff0f5eeaf..32c1ca9a2ab 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/metrowerks.hpp
@@ -126,7 +126,9 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -167,6 +169,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
@@ -180,7 +185,7 @@
// last known and checked version:
#if (__MWERKS__ > 0x3205)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp
index d9544345ac0..750d5884156 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/mpw.hpp
@@ -75,7 +75,9 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -116,6 +118,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
//
// versions check:
@@ -127,7 +132,7 @@
// last known and checked version is 0x890:
#if (MPW_CPLUS > 0x890)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp
index f21b9b54fe0..419dd724ac1 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/nvcc.hpp
@@ -12,7 +12,7 @@
#endif
#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
-# define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__
+# define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__)
#else
// We don't really know what the CUDA version is, but it's definitely before 7.5:
# define BOOST_CUDA_VERSION 7000000
@@ -22,6 +22,7 @@
// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
#define BOOST_GPU_ENABLED __host__ __device__
+#if !defined(__clang__) || defined(__NVCC__)
// A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions
// https://svn.boost.org/trac/boost/ticket/11897
// This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance
@@ -33,11 +34,13 @@
#if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000)
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
-// Most recent CUDA (8.0) has no constexpr support in msvc mode:
-#if defined(_MSC_VER)
+// CUDA (8.0) has no constexpr support in msvc mode:
+#if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000)
# define BOOST_NO_CXX11_CONSTEXPR
#endif
+#endif
+
#ifdef __CUDACC__
//
// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc:
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp
index 94b3f91d07c..683b0d31ba7 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/pathscale.hpp
@@ -88,7 +88,9 @@
# define BOOST_NO_CXX11_INLINE_NAMESPACES
# define BOOST_NO_CXX11_REF_QUALIFIERS
# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_OVERRIDE
# define BOOST_NO_CXX11_THREAD_LOCAL
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -129,4 +131,7 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp
index 54ad77a3c68..c674e8ab58c 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/sunpro_cc.hpp
@@ -123,6 +123,8 @@
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
#endif
#if (__SUNPRO_CC < 0x5140) || (__cplusplus < 201103)
@@ -182,6 +184,9 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
// Turn on threading support for Solaris 12.
// Ticket #11972
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp
index c8400a34d3b..0280fe2958d 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/vacpp.hpp
@@ -56,7 +56,7 @@
// last known and checked version is 1210:
#if (__IBMCPP__ > 1210)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "boost: Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
@@ -137,7 +137,9 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
@@ -178,3 +180,6 @@
#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp
index c533c50dfc7..4859c7c8129 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/visualc.hpp
@@ -43,6 +43,9 @@
# error "Compiler not supported or configured - please reconfigure"
#endif
+// VS2005 (VC8) docs: __assume has been in Visual C++ for multiple releases
+#define BOOST_UNREACHABLE_RETURN(x) __assume(0);
+
#if _MSC_FULL_VER < 180020827
# define BOOST_NO_FENV_H
#endif
@@ -108,8 +111,8 @@
// TR1 features:
//
#if (_MSC_VER >= 1700) && defined(_HAS_CXX17) && (_HAS_CXX17 > 0)
-// # define BOOST_HAS_TR1_HASH // don't know if this is true yet.
-// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet.
+// # define BOOST_HAS_TR1_HASH // don't know if this is true yet.
+// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet.
# define BOOST_HAS_TR1_UNORDERED_MAP
# define BOOST_HAS_TR1_UNORDERED_SET
#endif
@@ -141,6 +144,7 @@
# define BOOST_NO_CXX11_FINAL
# define BOOST_NO_CXX11_RANGE_BASED_FOR
# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_CXX11_OVERRIDE
#endif // _MSC_VER < 1700
// C++11 features supported by VC++ 12 (aka 2013).
@@ -182,6 +186,7 @@
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
# define BOOST_NO_CXX14_DIGIT_SEPARATORS
# define BOOST_NO_CXX11_THREAD_LOCAL
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
#endif
// C++11 features supported by VC++ 14 update 3 (aka 2015)
//
@@ -201,6 +206,10 @@
//
#if (_MSC_VER < 1911) || (_MSVC_LANG < 201703)
# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+// Let the defaults handle these now:
+//# define BOOST_NO_CXX17_HDR_OPTIONAL
+//# define BOOST_NO_CXX17_HDR_STRING_VIEW
#endif
// MSVC including version 14 has not yet completely
@@ -227,15 +236,19 @@
// if this is in effect or not, in any case nothing in Boost is currently using this, so we'll just go
// on defining it for now:
//
+#if (_MSC_FULL_VER < 193030705) || (_MSVC_LANG < 202004)
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
#if (_MSC_VER < 1912) || (_MSVC_LANG < 201402)
// Supported from msvc-15.5 onwards:
#define BOOST_NO_CXX11_SFINAE_EXPR
#endif
+#if (_MSC_VER < 1915) || (_MSVC_LANG < 201402)
// C++ 14:
// Still gives internal compiler error for msvc-15.5:
# define BOOST_NO_CXX14_CONSTEXPR
+#endif
// C++ 17:
#if (_MSC_VER < 1912) || (_MSVC_LANG < 201703)
#define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -272,6 +285,17 @@
# define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
#endif
+//
+// Approximate compiler conformance version
+//
+#ifdef _MSVC_LANG
+# define BOOST_CXX_VERSION _MSVC_LANG
+#elif defined(_HAS_CXX17)
+# define BOOST_CXX_VERSION 201703L
+#elif BOOST_MSVC >= 1916
+# define BOOST_CXX_VERSION 201402L
+#endif
+
#ifndef BOOST_COMPILER
// TODO:
// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
@@ -283,9 +307,9 @@
# if _MSC_VER < 1400
// Note: I'm not aware of any CE compiler with version 13xx
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
# else
-# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
# endif
# elif _MSC_VER < 1500
# define BOOST_COMPILER_VERSION evc8
@@ -301,14 +325,14 @@
# define BOOST_COMPILER_VERSION evc14
# else
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
# else
-# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
# endif
# endif
# else
# if _MSC_VER < 1200
- // Note: Versions up to 7.0 aren't supported.
+ // Note: Versions up to 10.0 aren't supported.
# define BOOST_COMPILER_VERSION 5.0
# elif _MSC_VER < 1300
# define BOOST_COMPILER_VERSION 6.0
@@ -330,6 +354,8 @@
# define BOOST_COMPILER_VERSION 14.0
# elif _MSC_VER < 1920
# define BOOST_COMPILER_VERSION 14.1
+# elif _MSC_VER < 1930
+# define BOOST_COMPILER_VERSION 14.2
# else
# define BOOST_COMPILER_VERSION _MSC_VER
# endif
@@ -341,8 +367,8 @@
#include <boost/config/pragma_message.hpp>
//
-// last known and checked version is 19.12.25830.2 (VC++ 2017.3):
-#if (_MSC_VER > 1912)
+// last known and checked version is 19.20.27508 (VC++ 2019 RC3):
+#if (_MSC_VER > 1920)
# if defined(BOOST_ASSERT_CONFIG)
# error "Boost.Config is older than your current compiler version."
# elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE)
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp
index a4c66e402cd..6e868817146 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp.hpp
@@ -194,6 +194,11 @@
#if !__has_feature(cxx_override_control)
# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_OVERRIDE
+#endif
+
+#if !__has_feature(cxx_unrestricted_unions)
+# define BOOST_NO_CXX11_UNRESTRICTED_UNION
#endif
#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
@@ -246,6 +251,10 @@
# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
// Clang 3.9+ in c++1z
#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
# define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -279,3 +288,4 @@
// Macro used to identify the Clang compiler.
#define BOOST_CLANG 1
+#define BOOST_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
diff --git a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp
index bc785b8ab01..bc5b7e831fc 100644
--- a/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/compiler/xlcpp_zos.hpp
@@ -140,7 +140,9 @@
#define BOOST_NO_CXX11_THREAD_LOCAL
#define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_OVERRIDE
#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_UNRESTRICTED_UNION
#define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#define BOOST_NO_CXX14_AGGREGATE_NSDMI
@@ -153,6 +155,7 @@
#define BOOST_NO_CXX17_STRUCTURED_BINDINGS
#define BOOST_NO_CXX17_INLINE_VARIABLES
#define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#define BOOST_NO_CXX17_IF_CONSTEXPR
// -------------------------------------
diff --git a/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp b/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp
index 618be6b9396..a243d41f8e7 100644
--- a/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/detail/cxx_composite.hpp
@@ -1,4 +1,4 @@
-// This file was automatically generated on Tue Aug 17 16:27:31 2021
+// This file was automatically generated on Sun Jun 5 16:50:18 2022
// by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-21.
// Use, modification and distribution are subject to the
@@ -163,6 +163,7 @@
#endif
#if defined(BOOST_NO_CXX14)\
+ || defined(BOOST_NO_CXX17_DEDUCTION_GUIDES)\
|| defined(BOOST_NO_CXX17_FOLD_EXPRESSIONS)\
|| defined(BOOST_NO_CXX17_HDR_ANY)\
|| defined(BOOST_NO_CXX17_HDR_CHARCONV)\
@@ -195,7 +196,8 @@
|| defined(BOOST_NO_CXX20_HDR_SOURCE_LOCATION)\
|| defined(BOOST_NO_CXX20_HDR_SPAN)\
|| defined(BOOST_NO_CXX20_HDR_STOP_TOKEN)\
- || defined(BOOST_NO_CXX20_HDR_SYNCSTREAM)
+ || defined(BOOST_NO_CXX20_HDR_SYNCSTREAM)\
+ || defined(BOOST_NO_CXX20_HDR_VERSION)
# define BOOST_NO_CXX20
#endif
diff --git a/contrib/restricted/boost/config/include/boost/config/detail/select_compiler_config.hpp b/contrib/restricted/boost/config/include/boost/config/detail/select_compiler_config.hpp
index 727f11bff60..fc857ea385c 100644
--- a/contrib/restricted/boost/config/include/boost/config/detail/select_compiler_config.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/detail/select_compiler_config.hpp
@@ -39,8 +39,7 @@
// Intel
# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
-#elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__) && !defined(_MSC_VER)
-// when using clang and cuda at same time, you want to appear as gcc
+#elif defined __clang__ && !defined(__ibmxl__) && !defined(__CODEGEARC__) && !defined(_MSC_VER)
// Clang C++ emulates GCC, so it has to appear early.
# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
diff --git a/contrib/restricted/boost/config/include/boost/config/detail/select_platform_config.hpp b/contrib/restricted/boost/config/include/boost/config/detail/select_platform_config.hpp
index e292f1bb59b..a4c18fd72d8 100644
--- a/contrib/restricted/boost/config/include/boost/config/detail/select_platform_config.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/detail/select_platform_config.hpp
@@ -88,6 +88,11 @@
#elif defined(__CloudABI__)
// Nuxi CloudABI:
# define BOOST_PLATFORM_CONFIG "boost/config/platform/cloudabi.hpp"
+
+#elif defined (__wasm__)
+// Web assembly:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/wasm.hpp"
+
#else
# if defined(unix) \
diff --git a/contrib/restricted/boost/config/include/boost/config/detail/select_stdlib_config.hpp b/contrib/restricted/boost/config/include/boost/config/detail/select_stdlib_config.hpp
index 8db778c86ba..1a09dda1261 100644
--- a/contrib/restricted/boost/config/include/boost/config/detail/select_stdlib_config.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/detail/select_stdlib_config.hpp
@@ -11,10 +11,21 @@
// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
-// First include <cstddef> to determine if some version of STLport is in use as the std lib
+// First, check if __has_include is available and <version> include can be located,
+// otherwise include <cstddef> to determine if some version of STLport is in use as the std lib
// (do not rely on this header being included since users can short-circuit this header
// if they know whose std lib they are using.)
-#ifdef __cplusplus
+#if defined(__cplusplus) && defined(__has_include)
+# if __has_include(<version>)
+// It should be safe to include `<version>` when it is present without checking
+// the actual C++ language version as it consists solely of macro definitions.
+// [version.syn] p1: The header <version> supplies implementation-dependent
+// information about the C++ standard library (e.g., version number and release date).
+# include <version>
+# else
+# include <cstddef>
+# endif
+#elif defined(__cplusplus)
# include <cstddef>
#else
# include <stddef.h>
diff --git a/contrib/restricted/boost/config/include/boost/config/detail/suffix.hpp b/contrib/restricted/boost/config/include/boost/config/detail/suffix.hpp
index e5d97856976..13d4bb6a682 100644
--- a/contrib/restricted/boost/config/include/boost/config/detail/suffix.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/detail/suffix.hpp
@@ -476,11 +476,14 @@ namespace std {
#endif
//
-// If we're on a CUDA device (note DEVICE not HOST, irrespective of compiler) then disable __float128 support if present:
+// If we're on a CUDA device (note DEVICE not HOST, irrespective of compiler) then disable __int128 and __float128 support if present:
//
#if defined(__CUDA_ARCH__) && defined(BOOST_HAS_FLOAT128)
# undef BOOST_HAS_FLOAT128
#endif
+#if defined(__CUDA_ARCH__) && defined(BOOST_HAS_INT128)
+# undef BOOST_HAS_INT128
+#endif
// long long workaround ------------------------------------------//
// On gcc (and maybe other compilers?) long long is alway supported
@@ -629,7 +632,7 @@ namespace std{ using ::type_info; }
// nvcc doesn't always parse __noinline__,
// see: https://svn.boost.org/trac/boost/ticket/9392
# define BOOST_NOINLINE __attribute__ ((noinline))
-# elif defined(HIP_VERSION)
+# elif defined(__HIP__)
// See https://github.com/boostorg/config/issues/392
# define BOOST_NOINLINE __attribute__ ((noinline))
# else
@@ -994,7 +997,7 @@ namespace std{ using ::type_info; }
// on unsupported compilers.
//
#ifndef BOOST_FALLTHROUGH
-# define BOOST_FALLTHROUGH [[fallthrough]]
+# define BOOST_FALLTHROUGH ((void)0)
#endif
//
@@ -1066,6 +1069,12 @@ namespace std{ using ::type_info; }
#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
+#if !defined(BOOST_NO_CXX11_NULLPTR)
+# define BOOST_NULLPTR nullptr
+#else
+# define BOOST_NULLPTR 0
+#endif
+
//
// Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined
//
@@ -1132,9 +1141,14 @@ namespace std{ using ::type_info; }
#endif
#endif
#endif
+//
+// Define the std level that the compiler claims to support:
+//
+#ifndef BOOST_CXX_VERSION
+# define BOOST_CXX_VERSION __cplusplus
+#endif
-#if !defined(_YVALS) && !defined(_CPPLIB_VER) // msvc std lib already configured
-#if (!defined(__has_include) || (__cplusplus < 201704))
+#if (!defined(__has_include) || (BOOST_CXX_VERSION < 201704))
# define BOOST_NO_CXX20_HDR_BARRIER
# define BOOST_NO_CXX20_HDR_FORMAT
# define BOOST_NO_CXX20_HDR_SOURCE_LOCATION
@@ -1150,49 +1164,67 @@ namespace std{ using ::type_info; }
# define BOOST_NO_CXX20_HDR_COROUTINE
# define BOOST_NO_CXX20_HDR_SEMAPHORE
#else
-#if !__has_include(<barrier>)
+#if (!__has_include(<barrier>) || !defined(__cpp_lib_barrier) || (__cpp_lib_barrier < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BARRIER)
# define BOOST_NO_CXX20_HDR_BARRIER
#endif
-#if !__has_include(<format>)
+#if (!__has_include(<format>) || !defined(__cpp_lib_format) || (__cpp_lib_format < 201907L)) && !defined(BOOST_NO_CXX20_HDR_FORMAT)
# define BOOST_NO_CXX20_HDR_FORMAT
#endif
-#if !__has_include(<source_Location>)
+#if (!__has_include(<source_location>) || !defined(__cpp_lib_source_location) || (__cpp_lib_source_location < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SOURCE_LOCATION)
# define BOOST_NO_CXX20_HDR_SOURCE_LOCATION
#endif
-#if !__has_include(<bit>)
+#if (!__has_include(<bit>) || !defined(__cpp_lib_bit_cast) || (__cpp_lib_bit_cast < 201806L) || !defined(__cpp_lib_bitops) || (__cpp_lib_bitops < 201907L) || !defined(__cpp_lib_endian) || (__cpp_lib_endian < 201907L)) && !defined(BOOST_NO_CXX20_HDR_BIT)
# define BOOST_NO_CXX20_HDR_BIT
#endif
-#if !__has_include(<latch>)
+#if (!__has_include(<latch>) || !defined(__cpp_lib_latch) || (__cpp_lib_latch < 201907L)) && !defined(BOOST_NO_CXX20_HDR_LATCH)
# define BOOST_NO_CXX20_HDR_LATCH
#endif
-#if !__has_include(<span>)
+#if (!__has_include(<span>) || !defined(__cpp_lib_span) || (__cpp_lib_span < 202002L)) && !defined(BOOST_NO_CXX20_HDR_SPAN)
# define BOOST_NO_CXX20_HDR_SPAN
#endif
-#if !__has_include(<compare>)
+#if (!__has_include(<compare>) || !defined(__cpp_lib_three_way_comparison) || (__cpp_lib_three_way_comparison < 201907L)) && !defined(BOOST_NO_CXX20_HDR_COMPARE)
# define BOOST_NO_CXX20_HDR_COMPARE
#endif
-#if !__has_include(<numbers>)
+#if (!__has_include(<numbers>) || !defined(__cpp_lib_math_constants) || (__cpp_lib_math_constants < 201907L)) && !defined(BOOST_NO_CXX20_HDR_NUMBERS)
# define BOOST_NO_CXX20_HDR_NUMBERS
#endif
-#if !__has_include(<stop_token>)
+#if (!__has_include(<stop_token>) || !defined(__cpp_lib_jthread) || (__cpp_lib_jthread < 201911L)) && !defined(BOOST_NO_CXX20_HDR_STOP_TOKEN)
# define BOOST_NO_CXX20_HDR_STOP_TOKEN
#endif
-#if !__has_include(<concepts>)
+#if (!__has_include(<concepts>) || !defined(__cpp_lib_concepts) || (__cpp_lib_concepts < 202002L)) && !defined(_YVALS) && !defined(_CPPLIB_VER) && !defined(BOOST_NO_CXX20_HDR_CONCEPTS)
# define BOOST_NO_CXX20_HDR_CONCEPTS
#endif
-#if !__has_include(<ranges>)
+#if (!__has_include(<ranges>) || !defined(__cpp_lib_ranges) || (__cpp_lib_ranges < 201911L)) && !defined(BOOST_NO_CXX20_HDR_RANGES)
# define BOOST_NO_CXX20_HDR_RANGES
#endif
-#if !__has_include(<syncstream>)
+#if (!__has_include(<syncstream>) || !defined(__cpp_lib_syncbuf) || (__cpp_lib_syncbuf < 201803L)) && !defined(BOOST_NO_CXX20_HDR_SYNCSTREAM)
# define BOOST_NO_CXX20_HDR_SYNCSTREAM
#endif
-#if !__has_include(<coroutine>)
+#if (!__has_include(<coroutine>) || !defined(__cpp_lib_coroutine) || (__cpp_lib_coroutine < 201902L)) && !defined(BOOST_NO_CXX20_HDR_COROUTINE)
# define BOOST_NO_CXX20_HDR_COROUTINE
#endif
-#if !__has_include(<semaphore>)
+#if (!__has_include(<semaphore>) || !defined(__cpp_lib_semaphore) || (__cpp_lib_semaphore < 201907L)) && !defined(BOOST_NO_CXX20_HDR_SEMAPHORE)
# define BOOST_NO_CXX20_HDR_SEMAPHORE
#endif
#endif
+
+#if defined(__cplusplus) && defined(__has_include)
+#if !__has_include(<version>)
+# define BOOST_NO_CXX20_HDR_VERSION
+#else
+// For convenience, this is always included:
+# include <version>
+#endif
+#else
+# define BOOST_NO_CXX20_HDR_VERSION
+#endif
+
+#if defined(BOOST_MSVC)
+#if (BOOST_MSVC < 1914) || (_MSVC_LANG < 201703)
+# define BOOST_NO_CXX17_DEDUCTION_GUIDES
+#endif
+#elif !defined(__cpp_deduction_guides) || (__cpp_deduction_guides < 201606)
+# define BOOST_NO_CXX17_DEDUCTION_GUIDES
#endif
//
@@ -1201,13 +1233,6 @@ namespace std{ using ::type_info; }
#include <boost/config/detail/cxx_composite.hpp>
//
-// Define the std level that the compiler claims to support:
-//
-#ifndef BOOST_CXX_VERSION
-# define BOOST_CXX_VERSION __cplusplus
-#endif
-
-//
// Finish off with checks for macros that are depricated / no longer supported,
// if any of these are set then it's very likely that much of Boost will no
// longer work. So stop with a #error for now, but give the user a chance
diff --git a/contrib/restricted/boost/config/include/boost/config/platform/bsd.hpp b/contrib/restricted/boost/config/include/boost/config/platform/bsd.hpp
index 79e74a080a8..ccc7eb05ad2 100644
--- a/contrib/restricted/boost/config/include/boost/config/platform/bsd.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/platform/bsd.hpp
@@ -28,7 +28,8 @@
// FreeBSD has <nl_types.h> but does not
// advertise the fact in <unistd.h>:
//
-#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
+#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) \
+ || defined(__OpenBSD__) || defined(__DragonFly__)
# define BOOST_HAS_NL_TYPES_H
#endif
@@ -56,7 +57,8 @@
#endif
#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
- || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__))
+ || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) \
+ || defined(__OpenBSD__) || defined(__DragonFly__))
# define BOOST_NO_CWCHAR
#endif
//
@@ -74,13 +76,8 @@
#define BOOST_HAS_GETTIMEOFDAY
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
#define BOOST_HAS_SIGACTION
+#define BOOST_HAS_CLOCK_GETTIME
// boilerplate code:
#define BOOST_HAS_UNISTD_H
#include <boost/config/detail/posix_features.hpp>
-
-
-
-
-
-
diff --git a/contrib/restricted/boost/config/include/boost/config/platform/cygwin.hpp b/contrib/restricted/boost/config/include/boost/config/platform/cygwin.hpp
index 6dd7e57cfd1..d0052d8b45f 100644
--- a/contrib/restricted/boost/config/include/boost/config/platform/cygwin.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/platform/cygwin.hpp
@@ -42,8 +42,11 @@
# define BOOST_HAS_STDINT_H
#endif
+#include <cygwin/version.h>
+#if (CYGWIN_VERSION_API_MAJOR == 0 && CYGWIN_VERSION_API_MINOR < 231)
/// Cygwin has no fenv.h
#define BOOST_NO_FENV_H
+#endif
// Cygwin has it's own <pthread.h> which breaks <shared_mutex> unless the correct compiler flags are used:
#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
diff --git a/contrib/restricted/boost/config/include/boost/config/requires_threads.hpp b/contrib/restricted/boost/config/include/boost/config/requires_threads.hpp
index cfaff23027c..c23a2ce3c9e 100644
--- a/contrib/restricted/boost/config/include/boost/config/requires_threads.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/requires_threads.hpp
@@ -54,7 +54,7 @@
// Compaq Tru64 Unix cxx
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread"
-#elif defined __BORLANDC__
+#elif defined BOOST_BORLANDC
// Borland
# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM"
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/dinkumware.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/dinkumware.hpp
index 641c2ae2e89..8feccc65af4 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/dinkumware.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/dinkumware.hpp
@@ -22,7 +22,7 @@
#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
// full dinkumware 3.06 and above
// fully conforming provided the compiler supports it:
-# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
+# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(BOOST_BORLANDC) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
# define BOOST_NO_STDC_NAMESPACE
# endif
# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
@@ -68,12 +68,12 @@
// the same applies to other compilers that sit on top
// of vc7.1 (Intel and Comeau):
//
-#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__)
+#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(BOOST_BORLANDC)
# define BOOST_STD_EXTENSION_NAMESPACE stdext
#endif
-#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
+#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(BOOST_BORLANDC)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
// if we're using a dinkum lib that's
// been configured for VC6/7 then there is
// no iterator traits (true even for icl)
@@ -86,20 +86,24 @@
# define BOOST_NO_STD_LOCALE
#endif
+#if ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER))) && (_MSC_VER < 1800)
// Fix for VC++ 8.0 on up ( I do not have a previous version to test )
// or clang-cl. If exceptions are off you must manually include the
// <exception> header before including the <typeinfo> header. Admittedly
// trying to use Boost libraries or the standard C++ libraries without
// exception support is not suggested but currently clang-cl ( v 3.4 )
// does not support exceptions and must be compiled with exceptions off.
-#if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER)))
+#if !_HAS_EXCEPTIONS
#include <exception>
#endif
#include <typeinfo>
-#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
- && !defined(__VXWORKS__)
+#if !_HAS_EXCEPTIONS
# define BOOST_NO_STD_TYPEINFO
#endif
+#endif
+#if defined(__ghs__) && !_HAS_NAMESPACE
+# define BOOST_NO_STD_TYPEINFO
+#endif
// C++0x headers implemented in 520 (as shipped by Microsoft)
//
@@ -136,6 +140,7 @@
# define BOOST_NO_CXX11_HDR_RATIO
# define BOOST_NO_CXX11_HDR_THREAD
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#endif
// C++0x headers implemented in 610 (as shipped by Microsoft)
@@ -171,14 +176,29 @@
#endif
// C++17 features
-#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)
+#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) \
+ || ((!defined(BOOST_MSVC) || (BOOST_MSVC < 1910))) && (!defined(__clang__) || !defined(_MSC_VER) || (_MSC_VER < 1929))\
+ || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_ITERATOR_TRAITS
-#endif
-#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
+# define BOOST_NO_CXX17_HDR_STRING_VIEW
+# define BOOST_NO_CXX17_HDR_OPTIONAL
+# define BOOST_NO_CXX17_HDR_VARIANT
+# define BOOST_NO_CXX17_HDR_ANY
+# define BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
+# define BOOST_NO_CXX17_HDR_CHARCONV
+# define BOOST_NO_CXX17_HDR_EXECUTION
+# define BOOST_NO_CXX17_HDR_FILESYSTEM
+#endif
+#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709)
# define BOOST_NO_CXX17_STD_INVOKE
#endif
+// C++20 features which aren't configured in suffix.hpp correctly:
+#if !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 202008L) || !defined(_HAS_CXX20) || (_HAS_CXX20 == 0)
+# define BOOST_NO_CXX20_HDR_CONCEPTS
+#endif
+
#if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0))
// Deprecated std::iterator:
# define BOOST_NO_STD_ITERATOR
@@ -199,7 +219,15 @@
// Bug specific to VC14,
// See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t
// and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2
-#if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650)
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650) && (!defined(_MSVC_STL_VERSION) || (_MSVC_STL_VERSION < 142))
+# define BOOST_NO_CXX11_HDR_CODECVT
+#endif
+
+#if (_MSVC_LANG > 201700) && !defined(BOOST_NO_CXX11_HDR_CODECVT)
+//
+// <codecvt> is deprected as of C++17, and by default MSVC emits hard errors
+// if you try to use it, so mark it as unavailable:
+//
# define BOOST_NO_CXX11_HDR_CODECVT
#endif
@@ -214,6 +242,12 @@
# define BOOST_NO_CXX98_BINDERS
# endif
#endif
+//
+// Things deprecated in C++20:
+//
+#if defined(_HAS_CXX20)
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#endif
//
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/libcomo.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/libcomo.hpp
index 75ac2bb76a2..6a8a1619625 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/libcomo.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/libcomo.hpp
@@ -39,6 +39,7 @@
# define BOOST_NO_CXX11_HDR_CHRONO
# define BOOST_NO_CXX11_HDR_CODECVT
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_EXCEPTION
# define BOOST_NO_CXX11_HDR_FORWARD_LIST
# define BOOST_NO_CXX11_HDR_FUTURE
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/libcpp.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/libcpp.hpp
index 1e77dca3365..bc8536eadde 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/libcpp.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/libcpp.hpp
@@ -41,6 +41,7 @@
# define BOOST_NO_CXX11_HDR_CODECVT
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_EXCEPTION
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
# define BOOST_NO_CXX11_HDR_MUTEX
# define BOOST_NO_CXX11_HDR_RANDOM
@@ -87,11 +88,11 @@
#endif
// C++17 features
-#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
-# define BOOST_NO_CXX17_STD_INVOKE
-#endif
#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_HDR_OPTIONAL
+# define BOOST_NO_CXX17_HDR_STRING_VIEW
+# define BOOST_NO_CXX17_HDR_VARIANT
#endif
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
# define BOOST_NO_AUTO_PTR
@@ -103,7 +104,34 @@
# define BOOST_NO_CXX98_BINDERS
#endif
+#if defined(__cplusplus) && defined(__has_include)
+#if __has_include(<version>)
+#include <version>
+
+#if !defined(__cpp_lib_execution) || (__cpp_lib_execution < 201603L)
+# define BOOST_NO_CXX17_HDR_EXECUTION
+#endif
+#if !defined(__cpp_lib_invoke) || (__cpp_lib_invoke < 201411L)
+#define BOOST_NO_CXX17_STD_INVOKE
+#endif
+
+#if(_LIBCPP_VERSION < 9000)
+// as_writable_bytes is missing.
+# define BOOST_NO_CXX20_HDR_SPAN
+#endif
+
+#else
+#define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result)
+#define BOOST_NO_CXX17_HDR_EXECUTION
+#endif
+#else
+#define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result)
+#define BOOST_NO_CXX17_HDR_EXECUTION
+#endif
+
+#if _LIBCPP_VERSION < 10000 // What's the correct version check here?
#define BOOST_NO_CXX17_ITERATOR_TRAITS
+#endif
#if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
// This is a bit of a sledgehammer, because really it's just libc++abi that has no
@@ -113,10 +141,16 @@
# define BOOST_NO_CXX11_THREAD_LOCAL
#endif
-#if defined(__linux__) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
+#if defined(__linux__) && (_LIBCPP_VERSION < 6000) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
// After libc++-dev is installed on Trusty, clang++-libc++ almost works,
// except uses of `thread_local` fail with undefined reference to
// `__cxa_thread_atexit`.
+//
+// clang's libc++abi provides an implementation by deferring to the glibc
+// implementation, which may or may not be available (it is not on Trusty).
+// clang 4's libc++abi will provide an implementation if one is not in glibc
+// though, so thread local support should work with clang 4 and above as long
+// as libc++abi is linked in.
# define BOOST_NO_CXX11_THREAD_LOCAL
#endif
@@ -130,4 +164,8 @@
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
#endif
+#if !defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX) && (_LIBCPP_VERSION < 5000)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
// --- end ---
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/libstdcpp3.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/libstdcpp3.hpp
index e99fe316df3..2219883606e 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/libstdcpp3.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/libstdcpp3.hpp
@@ -94,6 +94,20 @@
#endif
#endif
+#if defined(__has_include)
+#if defined(BOOST_HAS_HASH)
+#if !__has_include(BOOST_HASH_SET_HEADER) || (__GNUC__ >= 10)
+#undef BOOST_HAS_HASH
+#undef BOOST_HAS_SET_HEADER
+#undef BOOST_HAS_MAP_HEADER
+#endif
+#if !__has_include(BOOST_SLIST_HEADER)
+#undef BOOST_HAS_SLIST
+#undef BOOST_HAS_SLIST_HEADER
+#endif
+#endif
+#endif
+
//
// Decide whether we have C++11 support turned on:
//
@@ -125,7 +139,17 @@
//
#ifdef __clang__
-#if __has_include(<experimental/memory_resource>)
+#if __has_include(<source_location>)
+# define BOOST_LIBSTDCXX_VERSION 110100
+#elif __has_include(<compare>)
+# define BOOST_LIBSTDCXX_VERSION 100100
+#elif __has_include(<memory_resource>)
+# define BOOST_LIBSTDCXX_VERSION 90100
+#elif __has_include(<charconv>)
+# define BOOST_LIBSTDCXX_VERSION 80100
+#elif __has_include(<variant>)
+# define BOOST_LIBSTDCXX_VERSION 70100
+#elif __has_include(<experimental/memory_resource>)
# define BOOST_LIBSTDCXX_VERSION 60100
#elif __has_include(<experimental/any>)
# define BOOST_LIBSTDCXX_VERSION 50100
@@ -144,6 +168,33 @@
#elif __has_include(<array>)
# define BOOST_LIBSTDCXX_VERSION 40300
#endif
+//
+// If BOOST_HAS_FLOAT128 is set, now that we know the std lib is libstdc++3, check to see if the std lib is
+// configured to support this type. If not disable it:
+//
+#if defined(BOOST_HAS_FLOAT128) && !defined(_GLIBCXX_USE_FLOAT128)
+# undef BOOST_HAS_FLOAT128
+#endif
+
+#if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH)
+//
+// hash_set/hash_map deprecated and have terminal bugs:
+//
+#undef BOOST_HAS_HASH
+#undef BOOST_HAS_SET_HEADER
+#undef BOOST_HAS_MAP_HEADER
+#endif
+
+
+#if (BOOST_LIBSTDCXX_VERSION >= 100000) && defined(BOOST_HAS_HASH)
+//
+// hash_set/hash_map deprecated and have terminal bugs:
+//
+#undef BOOST_HAS_HASH
+#undef BOOST_HAS_SET_HEADER
+#undef BOOST_HAS_MAP_HEADER
+#endif
+
#if (BOOST_LIBSTDCXX_VERSION < 50100)
// libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it,
@@ -208,6 +259,7 @@ extern "C" char *gets (char *__s);
# endif
# elif !_GLIBCXX_USE_DEPRECATED
# define BOOST_NO_AUTO_PTR
+# define BOOST_NO_CXX98_BINDERS
# endif
#endif
@@ -231,6 +283,7 @@ extern "C" char *gets (char *__s);
# define BOOST_NO_CXX11_HDR_RATIO
# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#else
# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
@@ -279,10 +332,6 @@ extern "C" char *gets (char *__s);
# define BOOST_NO_CXX14_STD_EXCHANGE
#endif
-#if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7)))
-// As of clang-3.6, libstdc++ header <atomic> throws up errors with clang:
-# define BOOST_NO_CXX11_HDR_ATOMIC
-#endif
//
// C++0x features in GCC 5.1 and later
//
@@ -294,13 +343,14 @@ extern "C" char *gets (char *__s);
#endif
//
-// C++17 features in GCC 6.1 and later
+// C++17 features in GCC 7.1 and later
//
-#if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
-# define BOOST_NO_CXX17_STD_INVOKE
-#endif
#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
+# define BOOST_NO_CXX17_STD_INVOKE
# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_HDR_OPTIONAL
+# define BOOST_NO_CXX17_HDR_STRING_VIEW
+# define BOOST_NO_CXX17_HDR_VARIANT
#endif
#if defined(__has_include)
@@ -309,10 +359,76 @@ extern "C" char *gets (char *__s);
#elif __cplusplus <= 201103
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
#endif
+//
+// <execution> has a dependency to Intel's thread building blocks:
+// unless these are installed seperately, including <execution> leads
+// to inscrutable errors inside libstdc++'s own headers.
+//
+#if (BOOST_LIBSTDCXX_VERSION < 100100)
+#if !__has_include(<tbb/tbb.h>)
+#define BOOST_NO_CXX17_HDR_EXECUTION
+#endif
+#endif
#elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
#endif
+#if BOOST_LIBSTDCXX_VERSION < 100100
+//
+// The header may be present but is incomplete:
+//
+# define BOOST_NO_CXX17_HDR_CHARCONV
+#endif
+
+#if BOOST_LIBSTDCXX_VERSION < 110000
+//
+// Header <bit> may be present but lacks std::bit_cast:
+//
+#define BOOST_NO_CXX20_HDR_BIT
+#endif
+
+#if BOOST_LIBSTDCXX_VERSION >= 120000
+//
+// Unary function is now deprecated in C++11 and later:
+//
+#if __cplusplus >= 201103L
+#define BOOST_NO_CXX98_FUNCTION_BASE
+#endif
+#endif
+
+#ifndef __cpp_impl_coroutine
+# define BOOST_NO_CXX20_HDR_COROUTINE
+#endif
+
+//
+// These next defines are mostly for older clang versions with a newer libstdc++ :
+//
+#if !defined(__cpp_lib_concepts)
+#if !defined(BOOST_NO_CXX20_HDR_COMPARE)
+# define BOOST_NO_CXX20_HDR_COMPARE
+#endif
+#if !defined(BOOST_NO_CXX20_HDR_CONCEPTS)
+# define BOOST_NO_CXX20_HDR_CONCEPTS
+#endif
+#if !defined(BOOST_NO_CXX20_HDR_SPAN)
+# define BOOST_NO_CXX20_HDR_SPAN
+#endif
+#if !defined(BOOST_NO_CXX20_HDR_RANGES)
+# define BOOST_NO_CXX20_HDR_RANGES
+#endif
+#endif
+
+#if defined(__clang__)
+#if (__clang_major__ < 11) && !defined(BOOST_NO_CXX20_HDR_RANGES)
+# define BOOST_NO_CXX20_HDR_RANGES
+#endif
+#if (__clang_major__ < 10) && (BOOST_LIBSTDCXX_VERSION >= 110000) && !defined(BOOST_NO_CXX11_HDR_CHRONO)
+// Old clang can't parse <chrono>:
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+#endif
+#endif
+
//
// Headers not present on Solaris with the Oracle compiler:
#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5140)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/modena.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/modena.hpp
index 81919e01801..31a26c856a2 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/modena.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/modena.hpp
@@ -51,6 +51,7 @@
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/msl.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/msl.hpp
index 0e2e2afee8b..f2f825983be 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/msl.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/msl.hpp
@@ -75,6 +75,7 @@
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/roguewave.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/roguewave.hpp
index df6021551a3..03a65768c0e 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/roguewave.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/roguewave.hpp
@@ -59,7 +59,7 @@
//
// Borland version of numeric_limits lacks __int64 specialisation:
//
-#ifdef __BORLANDC__
+#ifdef BOOST_BORLANDC
# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
#endif
@@ -187,6 +187,7 @@
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/sgi.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/sgi.hpp
index 0c8ab2e4c10..c49957cef8b 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/sgi.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/sgi.hpp
@@ -145,6 +145,7 @@
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/stlport.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/stlport.hpp
index 2e304e2b945..38bc763f95f 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/stlport.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/stlport.hpp
@@ -62,11 +62,11 @@
// then the io stream facets are not available in namespace std::
//
#ifdef _STLPORT_VERSION
-# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC)
# define BOOST_NO_STD_LOCALE
# endif
#else
-# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(BOOST_BORLANDC)
# define BOOST_NO_STD_LOCALE
# endif
#endif
@@ -128,7 +128,7 @@
// BCB6 does cause problems. If we detect C++ Builder, then don't define
// BOOST_NO_STDC_NAMESPACE
//
-#if !defined(__BORLANDC__) && !defined(__DMC__)
+#if !defined(BOOST_BORLANDC) && !defined(__DMC__)
//
// If STLport is using it's own namespace, and the real names are in
// the global namespace, then we duplicate STLport's using declarations
@@ -143,7 +143,7 @@
# define BOOST_NO_STDC_NAMESPACE
# define BOOST_NO_EXCEPTION_STD_NAMESPACE
# endif
-#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560
+#elif defined(BOOST_BORLANDC) && BOOST_BORLANDC < 0x560
// STLport doesn't import std::abs correctly:
#include <stdlib.h>
namespace std { using ::abs; }
@@ -192,7 +192,7 @@ namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy;
// Borland ships a version of STLport with C++ Builder 6 that lacks
// hashtables and the like:
//
-#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
+#if defined(BOOST_BORLANDC) && (BOOST_BORLANDC == 0x560)
# undef BOOST_HAS_HASH
#endif
@@ -235,6 +235,7 @@ namespace boost { using std::min; using std::max; }
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/vacpp.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/vacpp.hpp
index c4e1fb1847e..b14dd65576e 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/vacpp.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/vacpp.hpp
@@ -51,6 +51,7 @@
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_STD_ALIGN
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_EXCEPTION
#if defined(__has_include)
#if !__has_include(<shared_mutex>)
diff --git a/contrib/restricted/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp b/contrib/restricted/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp
index 4d5beb18552..a5e02fd8b83 100644
--- a/contrib/restricted/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/stdlib/xlcpp_zos.hpp
@@ -50,6 +50,7 @@
#define BOOST_NO_CXX11_HDR_CHRONO
#define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_NO_CXX11_HDR_ARRAY
+#define BOOST_NO_CXX11_HDR_EXCEPTION
#define BOOST_NO_CXX11_STD_ALIGN
#define BOOST_NO_CXX14_STD_EXCHANGE
diff --git a/contrib/restricted/boost/config/include/boost/config/user.hpp b/contrib/restricted/boost/config/include/boost/config/user.hpp
index 4cbbce8f250..834a300f777 100644
--- a/contrib/restricted/boost/config/include/boost/config/user.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/user.hpp
@@ -1,8 +1,8 @@
// boost/config/user.hpp ---------------------------------------------------//
// (C) Copyright John Maddock 2001.
-// Use, modification and distribution are subject to the
-// Boost Software License, Version 1.0. (See accompanying file
+// 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)
// Do not check in modified versions of this file,
diff --git a/contrib/restricted/boost/config/include/boost/config/workaround.hpp b/contrib/restricted/boost/config/include/boost/config/workaround.hpp
index fca8f3ab7e5..688f9636609 100644
--- a/contrib/restricted/boost/config/include/boost/config/workaround.hpp
+++ b/contrib/restricted/boost/config/include/boost/config/workaround.hpp
@@ -50,6 +50,21 @@
#else
#define __CODEGEARC___WORKAROUND_GUARD 0
#endif
+#ifndef BOOST_BORLANDC
+#define BOOST_BORLANDC_WORKAROUND_GUARD 1
+#else
+#define BOOST_BORLANDC_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_CODEGEARC
+#define BOOST_CODEGEARC_WORKAROUND_GUARD 1
+#else
+#define BOOST_CODEGEARC_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_EMBTC
+#define BOOST_EMBTC_WORKAROUND_GUARD 1
+#else
+#define BOOST_EMBTC_WORKAROUND_GUARD 0
+#endif
#ifndef _MSC_VER
#define _MSC_VER_WORKAROUND_GUARD 1
#else
@@ -177,6 +192,11 @@
#else
#define _COMPILER_VERSION_WORKAROUND_GUARD 0
#endif
+#ifndef __clang_major__
+#define __clang_major___WORKAROUND_GUARD 1
+#else
+#define __clang_major___WORKAROUND_GUARD 0
+#endif
#ifndef _RWSTD_VER
#define _RWSTD_VER_WORKAROUND_GUARD 1
@@ -239,6 +259,12 @@
#else
#define BOOST_INTEL_WORKAROUND_GUARD 0
#endif
+#ifndef BOOST_CLANG_VERSION
+#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 1
+#else
+#define BOOST_CLANG_VERSION_WORKAROUND_GUARD 0
+#endif
+
// Always define to zero, if it's used it'll be defined my MPL:
#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
diff --git a/contrib/restricted/boost/config/include/boost/cstdint.hpp b/contrib/restricted/boost/config/include/boost/cstdint.hpp
index c8474c4623a..967aacfd3e1 100644
--- a/contrib/restricted/boost/config/include/boost/cstdint.hpp
+++ b/contrib/restricted/boost/config/include/boost/cstdint.hpp
@@ -52,9 +52,9 @@
// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
//
-#if defined(BOOST_HAS_STDINT_H) \
- && (!defined(__GLIBC__) \
- || defined(__GLIBC_HAVE_LONG_LONG) \
+#if defined(BOOST_HAS_STDINT_H) \
+ && (!defined(__GLIBC__) \
+ || defined(__GLIBC_HAVE_LONG_LONG) \
|| (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
// The following #include is an implementation artifact; not part of interface.
@@ -306,7 +306,7 @@ namespace boost
// 64-bit types + intmax_t and uintmax_t ----------------------------------//
# if defined(BOOST_HAS_LONG_LONG) && \
- !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
+ !defined(BOOST_MSVC) && !defined(BOOST_BORLANDC) && \
(!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
(defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
# if defined(__hpux)
@@ -451,7 +451,7 @@ INT#_C macros if they're not already defined (John Maddock).
#ifndef INT64_C
# define INT64_C(value) value##i64
#endif
-# ifdef __BORLANDC__
+# ifdef BOOST_BORLANDC
// Borland bug: appending ui8 makes the type a signed char
# define UINT8_C(value) static_cast<unsigned char>(value##u)
# else
diff --git a/contrib/restricted/boost/config/include/boost/detail/workaround.hpp b/contrib/restricted/boost/config/include/boost/detail/workaround.hpp
index fb961158804..9c392182a06 100644
--- a/contrib/restricted/boost/config/include/boost/detail/workaround.hpp
+++ b/contrib/restricted/boost/config/include/boost/detail/workaround.hpp
@@ -2,9 +2,9 @@
// 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)
-#ifndef WORKAROUND_DWA2002126_HPP
-#define WORKAROUND_DWA2002126_HPP
+#ifndef BOOST_WORKAROUND_DWA2002126_HPP
+#define BOOST_WORKAROUND_DWA2002126_HPP
#include <boost/config/workaround.hpp>
-#endif // WORKAROUND_DWA2002126_HPP
+#endif // BOOST_WORKAROUND_DWA2002126_HPP
diff --git a/contrib/restricted/boost/config/include/boost/version.hpp b/contrib/restricted/boost/config/include/boost/version.hpp
index e96f343212b..0378a2caa85 100644
--- a/contrib/restricted/boost/config/include/boost/version.hpp
+++ b/contrib/restricted/boost/config/include/boost/version.hpp
@@ -19,7 +19,7 @@
// BOOST_VERSION / 100 % 1000 is the minor version
// BOOST_VERSION / 100000 is the major version
-#define BOOST_VERSION 106700
+#define BOOST_VERSION 108000
//
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,6 +27,6 @@
// number, y is the minor version number, and z is the patch level if not 0.
// This is used by <config/auto_link.hpp> to select which library version to link to.
-#define BOOST_LIB_VERSION "1_67"
+#define BOOST_LIB_VERSION "1_80"
#endif