From 0debb6db2f5e805f5d0128fe406bd9e40c6080fa Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Mon, 12 Jun 2017 19:38:54 +0100
Subject: [PATCH 01/32] Allow stdint.h for compilers other than gcc when
building on linux with a recent glibc version. See
https://svn.boost.org/trac/boost/ticket/13045.
---
include/boost/config/platform/linux.hpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp
index db54677e..c4eef8f8 100644
--- a/include/boost/config/platform/linux.hpp
+++ b/include/boost/config/platform/linux.hpp
@@ -24,8 +24,9 @@
#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
// defines int64_t unconditionally, but defines
// int64_t only if __GNUC__. Thus, assume a fully usable
- // only when using GCC.
-# if defined __GNUC__
+ // only when using GCC. Update 2017: this appears not to be the case for
+ // recent glibc releases, see bug report: https://svn.boost.org/trac/boost/ticket/13045
+# if defined(__GNUC__) || ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 5)))
# define BOOST_HAS_STDINT_H
# endif
#endif
From fe5e07b521e49f6cca712c801e025fed13c23979 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Wed, 14 Jun 2017 19:32:59 +0100
Subject: [PATCH 02/32] gcc.hpp: Mingw has broken thread_local support. See
https://sourceforge.net/p/mingw-w64/bugs/527/
---
include/boost/config/compiler/gcc.hpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index da05a63e..d1cfed7a 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -303,6 +303,13 @@
# define BOOST_FALLTHROUGH __attribute__((fallthrough))
#endif
+#ifdef __MINGW32__
+// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see
+// https://sourceforge.net/p/mingw-w64/bugs/527/
+// Not setting this causes program termination on thread exit.
+#define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
//
// Unused attribute:
#if __GNUC__ >= 4
From 7d41f597cb6799a8c62a05081730e8efa22084f8 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Wed, 14 Jun 2017 19:42:21 +0100
Subject: [PATCH 03/32] Tentative fix for clang-3.0 failing config_test: It
appears not to completely support variadic template expansion.
---
include/boost/config/compiler/clang.hpp | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp
index 46ccbb68..157a94d2 100644
--- a/include/boost/config/compiler/clang.hpp
+++ b/include/boost/config/compiler/clang.hpp
@@ -310,6 +310,11 @@
#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
#endif
+#if (__clang_major__ == 3) && (__clang_minor__ == 0)
+// Apparently a clang bug:
+# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#endif
+
// Clang has supported the 'unused' attribute since the first release.
#define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
From d2b7f45ea26521bc7c15f02b81c0b205f65caf5c Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Wed, 14 Jun 2017 19:49:11 +0100
Subject: [PATCH 04/32] Add android detection macros to config_info output.
---
test/config_info.cpp | 33 ++++-----------------------------
1 file changed, 4 insertions(+), 29 deletions(-)
diff --git a/test/config_info.cpp b/test/config_info.cpp
index 3fe9d9df..a7863f42 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -344,6 +344,10 @@ void print_compiler_macros()
PRINT_MACRO(__CUDACC_VER_MINOR__);
PRINT_MACRO(__CUDACC_VER_BUILD__);
PRINT_MACRO(__CUDACC_VER__);
+
+ // Android:
+ PRINT_MACRO(ANDROID);
+ PRINT_MACRO(__ANDROID__);
}
void print_stdlib_macros()
@@ -1135,35 +1139,6 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
From 9b8de65f1dae960ecfde689a99c83f39ba60e3f9 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Thu, 15 Jun 2017 13:04:18 +0100
Subject: [PATCH 05/32] CUDA: disable some C++11 and 14 features which aren't
supported when compiling as a .cu file.
---
include/boost/config/compiler/nvcc.hpp | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
index b31d4f4f..283b7803 100644
--- a/include/boost/config/compiler/nvcc.hpp
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -30,3 +30,19 @@
#if defined(_MSC_VER)
# define BOOST_NO_CXX11_CONSTEXPR
#endif
+
+#ifdef __CUDACC__
+//
+// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc:
+//
+#if defined(_MSC_VER)
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+//
+// And this one effects the NVCC front end:
+//
+#define BOOST_NO_CXX11_NOEXCEPT
+
+#endif
+
From d9332d3fa30e3760427a34f27e55fcfd3163d9eb Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Thu, 15 Jun 2017 17:53:14 +0100
Subject: [PATCH 06/32] Restrict last fix to CUDA 8 only - other versions are
apparently unaffected.
---
include/boost/config/compiler/nvcc.hpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
index 283b7803..7729d2c2 100644
--- a/include/boost/config/compiler/nvcc.hpp
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -42,7 +42,9 @@
//
// And this one effects the NVCC front end:
//
-#define BOOST_NO_CXX11_NOEXCEPT
+#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100)
+# define BOOST_NO_CXX11_NOEXCEPT
+#endif
#endif
From 02dd07481dbc021937f10e58fc76eb666055177f Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Thu, 15 Jun 2017 17:54:41 +0100
Subject: [PATCH 07/32] Add link to bug report in comment. [ci skip]
---
include/boost/config/compiler/nvcc.hpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
index 7729d2c2..43039b5c 100644
--- a/include/boost/config/compiler/nvcc.hpp
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -40,7 +40,8 @@
# define BOOST_NO_CXX11_UNICODE_LITERALS
#endif
//
-// And this one effects the NVCC front end:
+// And this one effects the NVCC front end,
+// See https://svn.boost.org/trac/boost/ticket/13049
//
#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100)
# define BOOST_NO_CXX11_NOEXCEPT
From e6deedfb335984d47082c489178ba360dab4bea6 Mon Sep 17 00:00:00 2001
From: rsd
Date: Wed, 21 Jun 2017 14:35:04 -0500
Subject: [PATCH 08/32] Changed _RELEASE to _RELEASE_MAJOR. Mostly this is to
test pushing to our fork. More to come.
---
include/boost/config/compiler/cray.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index eab52877..0fd133a9 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -10,7 +10,7 @@
#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
-#if _RELEASE < 8
+#if _RELEASE_MAJOR < 8
# error "Boost is not configured for Cray compilers prior to version 8, please try the configure script."
#endif
From bfd7d04440aa1e54133d401434d914b6660555ce Mon Sep 17 00:00:00 2001
From: Richard Dale
Date: Fri, 23 Jun 2017 14:26:04 -0500
Subject: [PATCH 09/32] config/cray.hpp updated for release 8.6 of CCE (Cray
Compiler Environment)
The default C++ standard support at this release is c++14, compared
with c++03 in previous releases.
modified: cray.hpp
---
include/boost/config/compiler/cray.hpp | 27 ++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index 0fd133a9..f3e1baee 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -21,6 +21,7 @@
# error "Unsupported Cray compiler, please try running the configure script."
#endif
+#if _RELEASE_MINOR < 6
#include
@@ -90,5 +91,31 @@
#define __ATOMIC_SEQ_CST 5
#endif
+#else /* _RELEASE_MINOR */
+
+#define BOOST_HAS_VARIADIC_TMPL
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+#define BOOST_HAS_TR1_COMPLEX_OVERLOADS
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_STATIC_ASSERT
+#define BOOST_HAS_SIGACTION
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_RVALUE_REFS
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_YIELD
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#define BOOST_HAS_NRVO
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_NO_CXX11_SMART_PTR
+#define BOOST_NO_CXX11_HDR_FUNCTIONAL
+#define BOOST_NO_CXX14_CONSTEXPR
+#define BOOST_HAS_LONG_LONG
+#define BOOST_HAS_FLOAT128
+
+#endif /* _RELEASE_MINOR */
+
From 214c04f139d035cc0c37a6cfecc254bb90e20dd4 Mon Sep 17 00:00:00 2001
From: Richard Dale
Date: Mon, 26 Jun 2017 15:31:49 -0500
Subject: [PATCH 10/32] Update cray configuration for C++11.
Define BOOST_NO_CXX11_DECLTYPE_N3276 when __cplusplus < 201400.
This is for boost/variant.
---
include/boost/config/compiler/cray.hpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index f3e1baee..a4435dd5 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -115,6 +115,10 @@
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_FLOAT128
+#if __cplusplus < 201400
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif /* __cpluspus */
+
#endif /* _RELEASE_MINOR */
From 437f334745a0c114295ddf9a8085e99299a602cf Mon Sep 17 00:00:00 2001
From: Richard Dale
Date: Tue, 27 Jun 2017 14:09:06 -0500
Subject: [PATCH 11/32] Update compiler/cray.hpp to support c++03 and both 8.5
and 8.6 releases.
modified: cray.hpp
---
include/boost/config/compiler/cray.hpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index a4435dd5..5f810781 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -21,10 +21,9 @@
# error "Unsupported Cray compiler, please try running the configure script."
#endif
-#if _RELEASE_MINOR < 6
+#if _RELEASE_MINOR < 5 || __cplusplus < 201100
#include
-
//
//
#define BOOST_NO_CXX11_STATIC_ASSERT
From 4a58e5360a81b502078733ab4bec2abe033af8c2 Mon Sep 17 00:00:00 2001
From: Andrey Semashev
Date: Wed, 12 Jul 2017 17:51:53 +0300
Subject: [PATCH 12/32] Added BOOST_MAY_ALIAS and BOOST_NO_MAY_ALIAS macros.
The macros can be used to mark types that can alias other types (i.e. break
C++ strict aliasing rules).
---
doc/macro_reference.qbk | 12 ++++++++++++
include/boost/config/compiler/clang.hpp | 5 +++++
include/boost/config/compiler/gcc.hpp | 4 ++++
include/boost/config/compiler/intel.hpp | 6 ++++++
include/boost/config/compiler/vacpp.hpp | 5 +++++
include/boost/config/compiler/xlcpp.hpp | 5 +++++
include/boost/config/compiler/xlcpp_zos.hpp | 1 +
include/boost/config/detail/suffix.hpp | 8 ++++++++
test/config_info.cpp | 2 ++
test/helper_macro_test.cpp | 3 +++
10 files changed, 51 insertions(+)
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index a0d51e89..8f024ba7 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -1262,6 +1262,18 @@ Usage example:
]]
[[`BOOST_ATTRIBUTE_UNUSED`][Expands to `__attribute__((unused))` when this is available -
can be used to disable compiler warnings relating to unused types or variables.]]
+[[`BOOST_MAY_ALIAS`, `BOOST_NO_MAY_ALIAS`][
+`BOOST_MAY_ALIAS` expands to a type attribute that can be used to mark types that may
+alias other types. Pointers or references to such marked types can be used to access objects
+of other types. If the compiler supports this feature `BOOST_NO_MAY_ALIAS` is not defined.
+Otherwise `BOOST_MAY_ALIAS` expands to nothing and `BOOST_NO_MAY_ALIAS` is defined.
+
+Usage example:
+``
+ struct BOOST_MAY_ALIAS aliasing_struct;
+ typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+``
+]]
]
[endsect]
diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp
index 157a94d2..0fdf331f 100644
--- a/include/boost/config/compiler/clang.hpp
+++ b/include/boost/config/compiler/clang.hpp
@@ -318,6 +318,11 @@
// Clang has supported the 'unused' attribute since the first release.
#define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
+// Type aliasing hint.
+#if __has_attribute(__may_alias__)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
#endif
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index d1cfed7a..12958ab9 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -315,6 +315,10 @@
#if __GNUC__ >= 4
# define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
#endif
+
+// Type aliasing hint. Supported since gcc 3.3.
+#define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+
//
// __builtin_unreachable:
#if BOOST_GCC_VERSION >= 40800
diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp
index f55189a0..f549dcb6 100644
--- a/include/boost/config/compiler/intel.hpp
+++ b/include/boost/config/compiler/intel.hpp
@@ -311,6 +311,12 @@ template<> struct assert_intrinsic_wchar_t {};
# define BOOST_SYMBOL_IMPORT
# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
#endif
+
+// Type aliasing hint
+#if defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1300)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
//
// C++0x features
// For each feature we need to check both the Intel compiler version,
diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp
index 683c167d..c8400a34 100644
--- a/include/boost/config/compiler/vacpp.hpp
+++ b/include/boost/config/compiler/vacpp.hpp
@@ -65,6 +65,11 @@
#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
#endif
+// Type aliasing hint. Supported since XL C++ 13.1
+#if (__IBMCPP__ >= 1310)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
//
// C++0x features
//
diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp
index b267f49b..a4c66e40 100644
--- a/include/boost/config/compiler/xlcpp.hpp
+++ b/include/boost/config/compiler/xlcpp.hpp
@@ -267,6 +267,11 @@
# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
#endif
+// Type aliasing hint.
+#if __has_attribute(__may_alias__)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
#endif
diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp
index c554903a..bc785b8a 100644
--- a/include/boost/config/compiler/xlcpp_zos.hpp
+++ b/include/boost/config/compiler/xlcpp_zos.hpp
@@ -159,6 +159,7 @@
#if defined(__IBM_ATTRIBUTES)
# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
# define BOOST_NOINLINE __attribute__ ((__noinline__))
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
// No BOOST_ALIGNMENT - explicit alignment support is broken (V2R1).
#endif
diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp
index 6abec22f..caa0b229 100644
--- a/include/boost/config/detail/suffix.hpp
+++ b/include/boost/config/detail/suffix.hpp
@@ -602,6 +602,14 @@ namespace std{ using ::type_info; }
# endif
#endif
+// BOOST_MAY_ALIAS -----------------------------------------------//
+// The macro expands to an attribute to mark a type that is allowed to alias other types.
+// The macro is defined in the compiler-specific headers.
+#if !defined(BOOST_MAY_ALIAS)
+# define BOOST_NO_MAY_ALIAS
+# define BOOST_MAY_ALIAS
+#endif
+
// BOOST_FORCEINLINE ---------------------------------------------//
// Macro to use in place of 'inline' to force a function to be inline
#if !defined(BOOST_FORCEINLINE)
diff --git a/test/config_info.cpp b/test/config_info.cpp
index a7863f42..2a2a110d 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -1152,6 +1152,8 @@ void print_boost_macros()
PRINT_MACRO(BOOST_FORCEINLINE);
PRINT_MACRO(BOOST_NOINLINE);
PRINT_MACRO(BOOST_FALLTHROUGH);
+ PRINT_MACRO(BOOST_MAY_ALIAS);
+ PRINT_MACRO(BOOST_NO_MAY_ALIAS);
}
void print_separator()
diff --git a/test/helper_macro_test.cpp b/test/helper_macro_test.cpp
index 81737fec..e3b11128 100644
--- a/test/helper_macro_test.cpp
+++ b/test/helper_macro_test.cpp
@@ -34,6 +34,9 @@ BOOST_NORETURN void always_throw()
throw 0;
}
+struct BOOST_MAY_ALIAS aliasing_struct {};
+typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+
#define test_fallthrough(x) foobar(x)
From 34f320c4c9fbe45f367aa2e34507bbc95cee4da6 Mon Sep 17 00:00:00 2001
From: Andrey Semashev
Date: Sun, 9 Jul 2017 17:06:34 +0300
Subject: [PATCH 13/32] Added BOOST_NO_CXX17_ITERATOR_TRAITS macro.
The macro indicates that the standard library does not implement SFINAE-friendly
std::iterator_traits (LWG issue 2408, [iterator.traits]/2).
---
checks/Jamfile.v2 | 3 +-
checks/test_case.cpp | 7 +++-
doc/macro_reference.qbk | 1 +
include/boost/config/stdlib/dinkumware.hpp | 1 +
include/boost/config/stdlib/libcomo.hpp | 1 +
include/boost/config/stdlib/libcpp.hpp | 2 +
include/boost/config/stdlib/libstdcpp3.hpp | 1 +
include/boost/config/stdlib/modena.hpp | 1 +
include/boost/config/stdlib/msl.hpp | 1 +
include/boost/config/stdlib/roguewave.hpp | 1 +
include/boost/config/stdlib/sgi.hpp | 1 +
include/boost/config/stdlib/stlport.hpp | 1 +
include/boost/config/stdlib/vacpp.hpp | 1 +
include/boost/config/stdlib/xlcpp_zos.hpp | 1 +
test/all/Jamfile.v2 | 5 ++-
test/boost_no_cxx17_iterator_traits.ipp | 49 ++++++++++++++++++++++
test/config_info.cpp | 3 ++
test/config_test.cpp | 12 +++++-
test/no_cxx17_iterator_traits_fail.cpp | 37 ++++++++++++++++
test/no_cxx17_iterator_traits_pass.cpp | 37 ++++++++++++++++
20 files changed, 162 insertions(+), 4 deletions(-)
create mode 100644 test/boost_no_cxx17_iterator_traits.ipp
create mode 100644 test/no_cxx17_iterator_traits_fail.cpp
create mode 100644 test/no_cxx17_iterator_traits_pass.cpp
diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2
index 2aec5db7..77b7e9d2 100644
--- a/checks/Jamfile.v2
+++ b/checks/Jamfile.v2
@@ -1,6 +1,6 @@
#
# *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Mon May 29 10:27:35 2017
+# This file was automatically generated on Sun Jul 9 16:30:35 2017
# by libs/config/tools/generate.cpp
# Copyright John Maddock.
# Use, modification and distribution are subject to the
@@ -111,6 +111,7 @@ obj cxx14_std_exchange : test_case.cpp : TEST_BOOST_NO_CXX14_STD_EXCHANG
obj cxx14_variable_templates : test_case.cpp : TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ;
obj cxx17_fold_expressions : test_case.cpp : TEST_BOOST_NO_CXX17_FOLD_EXPRESSIONS ;
obj cxx17_inline_variables : test_case.cpp : TEST_BOOST_NO_CXX17_INLINE_VARIABLES ;
+obj cxx17_iterator_traits : test_case.cpp : TEST_BOOST_NO_CXX17_ITERATOR_TRAITS ;
obj cxx17_std_apply : test_case.cpp : TEST_BOOST_NO_CXX17_STD_APPLY ;
obj cxx17_std_invoke : test_case.cpp : TEST_BOOST_NO_CXX17_STD_INVOKE ;
obj cxx17_structured_bindings : test_case.cpp : TEST_BOOST_NO_CXX17_STRUCTURED_BINDINGS ;
diff --git a/checks/test_case.cpp b/checks/test_case.cpp
index 364af02e..05f921f1 100644
--- a/checks/test_case.cpp
+++ b/checks/test_case.cpp
@@ -1,4 +1,4 @@
-// This file was automatically generated on Mon May 29 10:27:35 2017
+// This file was automatically generated on Sun Jul 9 16:30:35 2017
// by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the
@@ -511,6 +511,11 @@
# error "Defect macro BOOST_NO_CXX17_INLINE_VARIABLES is defined."
# endif
#endif
+#ifdef TEST_BOOST_NO_CXX17_ITERATOR_TRAITS
+# ifdef BOOST_NO_CXX17_ITERATOR_TRAITS
+# error "Defect macro BOOST_NO_CXX17_ITERATOR_TRAITS is defined."
+# endif
+#endif
#ifdef TEST_BOOST_NO_CXX17_STD_APPLY
# ifdef BOOST_NO_CXX17_STD_APPLY
# error "Defect macro BOOST_NO_CXX17_STD_APPLY is defined."
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
index a0d51e89..85ed96e4 100644
--- a/doc/macro_reference.qbk
+++ b/doc/macro_reference.qbk
@@ -945,6 +945,7 @@ that are not yet supported by a particular compiler or library.
[[Macro ][Description ]]
[[`BOOST_NO_CXX17_STD_APPLY`][The compiler does not support `std::apply()`.]]
[[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]]
+[[`BOOST_NO_CXX17_ITERATOR_TRAITS`][The compiler does not support SFINAE-friendly `std::iterator_traits`.]]
]
[endsect]
diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp
index daac5dfb..0af104d0 100644
--- a/include/boost/config/stdlib/dinkumware.hpp
+++ b/include/boost/config/stdlib/dinkumware.hpp
@@ -175,6 +175,7 @@
#endif
#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#endif
#if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400)
diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp
index ce83f082..75ac2bb7 100644
--- a/include/boost/config/stdlib/libcomo.hpp
+++ b/include/boost/config/stdlib/libcomo.hpp
@@ -79,6 +79,7 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
//
// Intrinsic type_traits support.
diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp
index 9f3d259e..ad8aee32 100644
--- a/include/boost/config/stdlib/libcpp.hpp
+++ b/include/boost/config/stdlib/libcpp.hpp
@@ -97,6 +97,8 @@
# define BOOST_NO_AUTO_PTR
#endif
+#define BOOST_NO_CXX17_ITERATOR_TRAITS
+
#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
// support for thread_local, leading to linker errors such as
diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp
index 9adbc8f1..6cd420a6 100644
--- a/include/boost/config/stdlib/libstdcpp3.hpp
+++ b/include/boost/config/stdlib/libstdcpp3.hpp
@@ -247,6 +247,7 @@ extern "C" char *gets (char *__s);
#if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX11_HDR_TYPEINDEX
# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#endif
// C++0x features in GCC 4.7.0 and later
diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp
index 98bdc3fb..81919e01 100644
--- a/include/boost/config/stdlib/modena.hpp
+++ b/include/boost/config/stdlib/modena.hpp
@@ -68,6 +68,7 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#define BOOST_STDLIB "Modena C++ standard library"
diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp
index 9606a9ae..0e2e2afe 100644
--- a/include/boost/config/stdlib/msl.hpp
+++ b/include/boost/config/stdlib/msl.hpp
@@ -92,5 +92,6 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp
index 380d0ff3..df602155 100644
--- a/include/boost/config/stdlib/roguewave.hpp
+++ b/include/boost/config/stdlib/roguewave.hpp
@@ -204,3 +204,4 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp
index 5016ff62..0c8ab2e4 100644
--- a/include/boost/config/stdlib/sgi.hpp
+++ b/include/boost/config/stdlib/sgi.hpp
@@ -162,5 +162,6 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#define BOOST_STDLIB "SGI standard library"
diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp
index 81e6ccf0..2e304e2b 100644
--- a/include/boost/config/stdlib/stlport.hpp
+++ b/include/boost/config/stdlib/stlport.hpp
@@ -252,5 +252,6 @@ namespace boost { using std::min; using std::max; }
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp
index c159af25..c4e1fb18 100644
--- a/include/boost/config/stdlib/vacpp.hpp
+++ b/include/boost/config/stdlib/vacpp.hpp
@@ -68,5 +68,6 @@
// C++17 features
# define BOOST_NO_CXX17_STD_APPLY
# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
#define BOOST_STDLIB "Visual Age default standard library"
diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp
index dce40f50..4d5beb18 100644
--- a/include/boost/config/stdlib/xlcpp_zos.hpp
+++ b/include/boost/config/stdlib/xlcpp_zos.hpp
@@ -57,3 +57,4 @@
#define BOOST_NO_CXX17_STD_INVOKE
#define BOOST_NO_CXX17_STD_APPLY
+#define BOOST_NO_CXX17_ITERATOR_TRAITS
diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2
index 78f4db2a..d8e1636d 100644
--- a/test/all/Jamfile.v2
+++ b/test/all/Jamfile.v2
@@ -1,7 +1,7 @@
#
# Regression test Jamfile for boost configuration setup.
# *** DO NOT EDIT THIS FILE BY HAND ***
-# This file was automatically generated on Mon May 29 10:27:35 2017
+# This file was automatically generated on Sun Jul 9 16:30:35 2017
# by libs/config/tools/generate.cpp
# Copyright John Maddock.
# Use, modification and distribution are subject to the
@@ -322,6 +322,9 @@ test-suite "BOOST_NO_CXX17_FOLD_EXPRESSIONS" :
test-suite "BOOST_NO_CXX17_INLINE_VARIABLES" :
[ run ../no_cxx17_inline_variables_pass.cpp ]
[ compile-fail ../no_cxx17_inline_variables_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_ITERATOR_TRAITS" :
+[ run ../no_cxx17_iterator_traits_pass.cpp ]
+[ compile-fail ../no_cxx17_iterator_traits_fail.cpp ] ;
test-suite "BOOST_NO_CXX17_STD_APPLY" :
[ run ../no_cxx17_std_apply_pass.cpp ]
[ compile-fail ../no_cxx17_std_apply_fail.cpp ] ;
diff --git a/test/boost_no_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp
new file mode 100644
index 00000000..ea75f232
--- /dev/null
+++ b/test/boost_no_cxx17_iterator_traits.ipp
@@ -0,0 +1,49 @@
+// Copyright (c) Andrey Semashev 2017.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for most recent version.
+
+// MACRO: BOOST_NO_CXX17_ITERATOR_TRAITS
+// TITLE: C++17 std::iterator_traits
+// DESCRIPTION: The compiler does not support SFINAE-friendly std::iterator_traits defined in C++17.
+
+#include
+
+namespace boost_no_cxx17_iterator_traits {
+
+struct iterator :
+ public std::iterator< std::random_access_iterator_tag, char >
+{
+};
+
+struct non_iterator {};
+
+template< typename T >
+struct void_type { typedef void type; };
+
+template< typename Traits, typename Void = void >
+struct has_iterator_category
+{
+ enum { value = false };
+};
+
+template< typename Traits >
+struct has_iterator_category< Traits, typename void_type< typename Traits::iterator_category >::type >
+{
+ enum { value = true };
+};
+
+int test()
+{
+ if (!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value)
+ return 1;
+
+ if (has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value)
+ return 2;
+
+ return 0;
+}
+
+}
diff --git a/test/config_info.cpp b/test/config_info.cpp
index a7863f42..32ea8581 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -1073,6 +1073,7 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS);
PRINT_MACRO(BOOST_NO_CXX17_INLINE_VARIABLES);
+ PRINT_MACRO(BOOST_NO_CXX17_ITERATOR_TRAITS);
PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY);
PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE);
PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS);
@@ -1139,6 +1140,8 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
+
+
// END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL);
diff --git a/test/config_test.cpp b/test/config_test.cpp
index 93e838a6..446fa891 100644
--- a/test/config_test.cpp
+++ b/test/config_test.cpp
@@ -1,4 +1,4 @@
-// This file was automatically generated on Mon May 29 10:27:35 2017
+// This file was automatically generated on Sun Jul 9 16:30:35 2017
// by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the
@@ -342,6 +342,11 @@ namespace boost_no_cxx17_fold_expressions = empty_boost;
#else
namespace boost_no_cxx17_inline_variables = empty_boost;
#endif
+#ifndef BOOST_NO_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+namespace boost_no_cxx17_iterator_traits = empty_boost;
+#endif
#ifndef BOOST_NO_CXX17_STD_APPLY
#include "boost_no_cxx17_std_apply.ipp"
#else
@@ -1476,6 +1481,11 @@ int main( int, char *[] )
std::cerr << "Failed test for BOOST_NO_CXX17_INLINE_VARIABLES at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count;
}
+ if(0 != boost_no_cxx17_iterator_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_ITERATOR_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
if(0 != boost_no_cxx17_std_apply::test())
{
std::cerr << "Failed test for BOOST_NO_CXX17_STD_APPLY at: " << __FILE__ << ":" << __LINE__ << std::endl;
diff --git a/test/no_cxx17_iterator_traits_fail.cpp b/test/no_cxx17_iterator_traits_fail.cpp
new file mode 100644
index 00000000..4b241c98
--- /dev/null
+++ b/test/no_cxx17_iterator_traits_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Jul 9 15:26:23 2017
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
+
+// Test file for macro BOOST_NO_CXX17_ITERATOR_TRAITS
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_ITERATOR_TRAITS should not be defined.
+// See file boost_no_cxx17_iterator_traits.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifdef BOOST_NO_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_iterator_traits::test();
+}
+
diff --git a/test/no_cxx17_iterator_traits_pass.cpp b/test/no_cxx17_iterator_traits_pass.cpp
new file mode 100644
index 00000000..a2a29bb6
--- /dev/null
+++ b/test/no_cxx17_iterator_traits_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Jul 9 15:26:23 2017
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id$
+//
+
+
+// Test file for macro BOOST_NO_CXX17_ITERATOR_TRAITS
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_ITERATOR_TRAITS should be defined.
+// See file boost_no_cxx17_iterator_traits.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include
+#include "test.hpp"
+
+#ifndef BOOST_NO_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+namespace boost_no_cxx17_iterator_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_iterator_traits::test();
+}
+
From e2c4eb9de8a5cf2f975f226d62bba84e6cb9a07e Mon Sep 17 00:00:00 2001
From: Richard Dale
Date: Thu, 20 Jul 2017 14:15:50 -0500
Subject: [PATCH 14/32] add BOOST_HASH_NO_EXTENSIONS to compile/cray.hpp
Avoid problems with multiple definitions of std::list using gnu headers.
modified: cray.hpp
---
include/boost/config/compiler/cray.hpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index 5f810781..001e3606 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -113,6 +113,7 @@
#define BOOST_NO_CXX14_CONSTEXPR
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_FLOAT128
+#define BOOST_HASH_NO_EXTENSIONS
#if __cplusplus < 201400
#define BOOST_NO_CXX11_DECLTYPE_N3276
From 92ab15c361f9ee201dd92f4e9dc9fcdc2a750039 Mon Sep 17 00:00:00 2001
From: Richard Dale
Date: Fri, 21 Jul 2017 08:20:15 -0500
Subject: [PATCH 15/32] Revert last change. We will fix this in the compiler.
---
include/boost/config/compiler/cray.hpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
index 001e3606..5f810781 100644
--- a/include/boost/config/compiler/cray.hpp
+++ b/include/boost/config/compiler/cray.hpp
@@ -113,7 +113,6 @@
#define BOOST_NO_CXX14_CONSTEXPR
#define BOOST_HAS_LONG_LONG
#define BOOST_HAS_FLOAT128
-#define BOOST_HASH_NO_EXTENSIONS
#if __cplusplus < 201400
#define BOOST_NO_CXX11_DECLTYPE_N3276
From d2b16361e631e0fb3b030c5bdee9ac3f15fbeef2 Mon Sep 17 00:00:00 2001
From: Andrey Semashev
Date: Wed, 12 Jul 2017 20:48:48 +0300
Subject: [PATCH 16/32] Fixed references to headers in the docs.
---
doc/config.qbk | 2 +-
doc/guidelines.qbk | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/doc/config.qbk b/doc/config.qbk
index fd10efc9..3dc11ba6 100644
--- a/doc/config.qbk
+++ b/doc/config.qbk
@@ -22,7 +22,7 @@ Distributed under the Boost Software License, Version 1.0.
[def __BOOST_REGRESSION_TEST_DRIVER__ [@../../../../tools/regression/doc/index.html boost regression test driver]]
[def __BOOST_CONFIG_HEADER__ [@../../../../boost/config.hpp ]]
[def __BOOST_CONFIG_USER_HEADER__ [@../../../../boost/config/user.hpp ]]
-[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/user.hpp ]]
+[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/detail/suffix.hpp ]]
[def __BOOST_CONFIG_DIR__ [']`/boost/config/`]
diff --git a/doc/guidelines.qbk b/doc/guidelines.qbk
index 93436457..19fefc66 100644
--- a/doc/guidelines.qbk
+++ b/doc/guidelines.qbk
@@ -191,9 +191,9 @@ modifying this file as it breaks dependencies for everyone. This file should
include only "boilerplate" configuration code, and generally should change
only when new macros are added.
-[@../../../../boost/config/select_compiler_config.hpp ],
-[@../../../../boost/config/select_platform_config.hpp ] and
-[@../../../../boost/config/select_stdlib_config.hpp ]
+[@../../../../boost/config/detail/select_compiler_config.hpp ],
+[@../../../../boost/config/detail/select_platform_config.hpp ] and
+[@../../../../boost/config/detail/select_stdlib_config.hpp ]
are included by default and should change only if support for a new
compiler/standard library/platform is added.
From c21f170a97ad8c68bad66b05251c54ba8352b8f1 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Fri, 21 Jul 2017 19:08:40 +0100
Subject: [PATCH 17/32] Regenerate docs.
---
.../boost_config/boost_macro_reference.html | 40 +++++++++++++++++++
.../guidelines_for_boost_authors.html | 10 ++---
doc/html/index.html | 4 +-
3 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html
index da3866c0..667484f9 100644
--- a/doc/html/boost_config/boost_macro_reference.html
+++ b/doc/html/boost_config/boost_macro_reference.html
@@ -3017,6 +3017,18 @@
+
+
+ BOOST_NO_CXX11_POINTER_TRAITS
+
+ |
+
+
+ The standard library does not provide a C++11 version of std::pointer_traits in <memory>.
+
+ |
+
+
BOOST_NO_CXX11_RANGE_BASED_FOR
@@ -4480,6 +4492,34 @@
|
+
+
+
+ BOOST_MAY_ALIAS ,
+ BOOST_NO_MAY_ALIAS
+
+ |
+
+
+ BOOST_MAY_ALIAS
+ expands to a type attribute that can be used to mark types that
+ may alias other types. Pointers or references to such marked types
+ can be used to access objects of other types. If the compiler supports
+ this feature BOOST_NO_MAY_ALIAS
+ is not defined. Otherwise BOOST_MAY_ALIAS
+ expands to nothing and BOOST_NO_MAY_ALIAS
+ is defined.
+
+
+ Usage example:
+
+struct BOOST_MAY_ALIAS aliasing_struct;
+typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+
+
+
+ |
+
diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html
index 48edf26b..212c9fbc 100644
--- a/doc/html/boost_config/guidelines_for_boost_authors.html
+++ b/doc/html/boost_config/guidelines_for_boost_authors.html
@@ -302,7 +302,7 @@
one specific API (for example BOOST_HAS_NL_TYPES_H
rather than BOOST_HAS_CATOPEN
).
If the macro describes a POSIX feature group, then add boilerplate code to
- <boost/config/suffix.hpp>
+ <boost/config/detail/suffix.hpp>
to auto-detect the feature where possible (if you are wondering why we can't
use POSIX feature test macro directly, remember that many of these features
can be added by third party libraries, and are not therefore identified inside
@@ -333,15 +333,15 @@
as well.
- <boost/config/suffix.hpp>
+ <boost/config/detail/suffix.hpp>
is always included so be careful about modifying this file as it breaks dependencies
for everyone. This file should include only "boilerplate" configuration
code, and generally should change only when new macros are added.
- <boost/config/select_compiler_config.hpp>,
- <boost/config/select_platform_config.hpp>
- and <boost/config/select_stdlib_config.hpp>
+ <boost/config/detail/select_compiler_config.hpp>,
+ <boost/config/detail/select_platform_config.hpp>
+ and <boost/config/detail/select_stdlib_config.hpp>
are included by default and should change only if support for a new compiler/standard
library/platform is added.
diff --git a/doc/html/index.html b/doc/html/index.html
index 76ba53d1..109e2013 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -757,7 +757,7 @@
user settable macros).
- Finally the boost configuration header, includes <boost/config/suffix.hpp>;
+ Finally the boost configuration header, includes <boost/config/detail/suffix.hpp>;
this header contains any boiler plate configuration code - for example where
one boost macro being set implies that another must be set also.
@@ -992,7 +992,7 @@
-Last revised: April 17, 2017 at 17:42:09 GMT |
+Last revised: July 21, 2017 at 18:08:20 GMT |
|
From 5cf4d8b369e05e6221cd3f38bb0ba5fff5cf641a Mon Sep 17 00:00:00 2001
From: Alan Somers
Date: Wed, 26 Jul 2017 11:23:05 -0600
Subject: [PATCH 18/32] Fix bash paths in shebangs
"/bin/bash" is a Linuxism. "/usr/bin/env bash" is portable.
---
test/link/bc_gen.sh | 2 +-
test/link/vc_gen.sh | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/test/link/bc_gen.sh b/test/link/bc_gen.sh
index 6e48dda8..07ff3aa5 100644
--- a/test/link/bc_gen.sh
+++ b/test/link/bc_gen.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# copyright John Maddock 2005
# Use, modification and distribution are subject to the
diff --git a/test/link/vc_gen.sh b/test/link/vc_gen.sh
index 1ba46f3b..a4f5dcca 100644
--- a/test/link/vc_gen.sh
+++ b/test/link/vc_gen.sh
@@ -1,4 +1,4 @@
-#! /bin/bash
+#! /usr/bin/env bash
# copyright John Maddock 2005
# Use, modification and distribution are subject to the
# Boost Software License, Version 1.0. (See accompanying file
From dd31807230b60030e12adbd0ebdd59ed6dfacc00 Mon Sep 17 00:00:00 2001
From: David Olsen
Date: Wed, 26 Jul 2017 13:10:10 -0700
Subject: [PATCH 19/32] Update PGI C++ compiler support
Remove an old PGI-specific workaround for intptr_t. The workaround is no longer necessary and now causes compilation errors.
---
include/boost/cstdint.hpp | 5 -----
1 file changed, 5 deletions(-)
diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp
index 31b67417..e7799742 100644
--- a/include/boost/cstdint.hpp
+++ b/include/boost/cstdint.hpp
@@ -367,9 +367,6 @@ namespace boost
#include
#endif
-// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config.
-#if !defined(__PGIC__)
-
#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
|| (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
|| defined(__CYGWIN__) \
@@ -393,8 +390,6 @@ namespace boost {
#endif
-#endif // !defined(__PGIC__)
-
#endif // BOOST_CSTDINT_HPP
From 4f1df700adb2007132f84fb95c03440630a9e821 Mon Sep 17 00:00:00 2001
From: David Olsen
Date: Thu, 27 Jul 2017 14:49:09 -0700
Subject: [PATCH 20/32] Update PGI C++ compiler support
When the PGI C++ compiler changed to be GNU compatible, pgi.hpp stopped being used, because the check for __GNUC__ in select_compiler_config.hpp was true before the preprocessor ever got to the check for __PGI. Rearrange the order of the checks in select_compiler_config.hpp, moving the check for __PGI above the check for __GNUC__.
pgi.hpp was designed for a very old version of PGI C++, before it was GNU compatible. The settings in that file won't work for PGI compilers of the last few years. Replace the entire file with one that just includes gcc.hpp and then adjusts a few macros for areas where PGI is not quite GNU compatible. (The old PGI compilers are not actively being used by any customers that we (PGI) know of, so keeping the old contents of pgi.hpp would be of little or no benefit.)
---
include/boost/config/compiler/pgi.hpp | 161 +-----------------
.../config/detail/select_compiler_config.hpp | 8 +-
2 files changed, 12 insertions(+), 157 deletions(-)
diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp
index 4c402ba0..4e909d8a 100644
--- a/include/boost/config/compiler/pgi.hpp
+++ b/include/boost/config/compiler/pgi.hpp
@@ -1,4 +1,5 @@
// (C) Copyright Noel Belcourt 2007.
+// Copyright 2017, NVIDIA CORPORATION.
// 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)
@@ -10,159 +11,13 @@
#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
-//
-// Threading support:
-// Turn this on unconditionally here, it will get turned off again later
-// if no threading API is detected.
-//
+// PGI is mostly GNU compatible. So start with that.
+#include
-#if __PGIC__ >= 11
+// Now adjust for things that are different.
-// options requested by configure --enable-test
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_THREADS
-#define BOOST_HAS_PTHREAD_YIELD
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_LONG_LONG
-
-// options --enable-test wants undefined
-#undef BOOST_NO_STDC_NAMESPACE
-#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
-#undef BOOST_DEDUCED_TYPENAME
-
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-
-#elif __PGIC__ >= 10
-
-// options requested by configure --enable-test
-#define BOOST_HAS_THREADS
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_LONG_LONG
-#if defined(linux) || defined(__linux) || defined(__linux__)
-# define BOOST_HAS_STDINT_H
-#endif
-
-// options --enable-test wants undefined
-#undef BOOST_NO_STDC_NAMESPACE
-#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
-#undef BOOST_DEDUCED_TYPENAME
-
-#elif __PGIC__ >= 7
-
-#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
-#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#define BOOST_NO_SWPRINTF
-#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CXX11_AUTO_DECLARATIONS
-
-#else
-
-# error "Pgi compiler not configured - please reconfigure"
-
-#endif
-//
-// C++0x features
-//
-// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
-//
-#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_EXTERN_TEMPLATE
-#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_NUMERIC_LIMITS
-#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_SWPRINTF
-#define BOOST_NO_CXX11_TEMPLATE_ALIASES
-#define BOOST_NO_CXX11_UNICODE_LITERALS
-#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
-
-#define BOOST_NO_CXX11_HDR_UNORDERED_SET
-#define BOOST_NO_CXX11_HDR_UNORDERED_MAP
-#define BOOST_NO_CXX11_HDR_TYPEINDEX
-#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-#define BOOST_NO_CXX11_HDR_TUPLE
-#define BOOST_NO_CXX11_HDR_THREAD
-#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
-#define BOOST_NO_CXX11_HDR_REGEX
-#define BOOST_NO_CXX11_HDR_RATIO
-#define BOOST_NO_CXX11_HDR_RANDOM
-#define BOOST_NO_CXX11_HDR_MUTEX
-#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
-#define BOOST_NO_CXX11_HDR_FUTURE
-#define BOOST_NO_CXX11_HDR_FORWARD_LIST
-#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
-#define BOOST_NO_CXX11_HDR_CODECVT
-#define BOOST_NO_CXX11_HDR_CHRONO
-#define BOOST_NO_CXX11_HDR_ARRAY
-#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_THREAD_LOCAL
-
-// C++ 14:
-#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
-# define BOOST_NO_CXX14_AGGREGATE_NSDMI
-#endif
-#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
-# define BOOST_NO_CXX14_BINARY_LITERALS
-#endif
-#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
-# define BOOST_NO_CXX14_CONSTEXPR
-#endif
-#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
-# define BOOST_NO_CXX14_DECLTYPE_AUTO
-#endif
-#if (__cplusplus < 201304) // There's no SD6 check for this....
-# define BOOST_NO_CXX14_DIGIT_SEPARATORS
-#endif
-#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
-# define BOOST_NO_CXX14_GENERIC_LAMBDAS
-#endif
-#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
-# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
-#endif
-#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
-# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
-#endif
-#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
-# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
-#endif
-
-// C++17
-#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
-# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
-#endif
-#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
-# define BOOST_NO_CXX17_INLINE_VARIABLES
-#endif
-#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
-# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
-#endif
-//
-// version check:
-// probably nothing to do here?
+// __float128 is a typedef, not a distinct type.
+#undef BOOST_HAS_FLOAT128
+// __int128 is not supported.
+#undef BOOST_HAS_INT128
diff --git a/include/boost/config/detail/select_compiler_config.hpp b/include/boost/config/detail/select_compiler_config.hpp
index 97d47c1c..ced8443d 100644
--- a/include/boost/config/detail/select_compiler_config.hpp
+++ b/include/boost/config/detail/select_compiler_config.hpp
@@ -52,6 +52,10 @@
// Wind River Diab C++
# define BOOST_COMPILER_CONFIG "boost/config/compiler/diab.hpp"
+#elif defined(__PGI)
+// Portland Group Inc.
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp"
+
# elif defined(__GNUC__) && !defined(__ibmxl__)
// GNU C++:
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
@@ -108,10 +112,6 @@
// IBM Visual Age or IBM XL C/C++ for Linux (Big Endian)
# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
-#elif defined(__PGI)
-// Portland Group Inc.
-# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp"
-
#elif defined _MSC_VER
// Microsoft Visual C++
//
From b2ee38f94b9d7a12d9a9f504c37c1f8f81c97609 Mon Sep 17 00:00:00 2001
From: Marshall Clow
Date: Sun, 6 Aug 2017 17:53:56 -0700
Subject: [PATCH 21/32] Add code to set for BOOST_NO_CXX98_RANDOM_SHUFFLE and
BOOST_NO_CXX98_BINDERS correctly
---
include/boost/config/stdlib/libcpp.hpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp
index ad8aee32..10b69176 100644
--- a/include/boost/config/stdlib/libcpp.hpp
+++ b/include/boost/config/stdlib/libcpp.hpp
@@ -96,6 +96,12 @@
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
# define BOOST_NO_AUTO_PTR
#endif
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
+# define BOOST_NO_CXX98_RANDOM_SHUFFLE
+#endif
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
+# define BOOST_NO_CXX98_BINDERS
+#endif
#define BOOST_NO_CXX17_ITERATOR_TRAITS
From 186a7316b9be11f5e3262c0c8c4382bd77aba325 Mon Sep 17 00:00:00 2001
From: Marshall Clow
Date: Mon, 7 Aug 2017 06:11:30 -0700
Subject: [PATCH 22/32] Fix copy-paste-o
Now checks `_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS` instead.
---
include/boost/config/stdlib/libcpp.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp
index 10b69176..3d3f4ae4 100644
--- a/include/boost/config/stdlib/libcpp.hpp
+++ b/include/boost/config/stdlib/libcpp.hpp
@@ -99,7 +99,7 @@
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
# define BOOST_NO_CXX98_RANDOM_SHUFFLE
#endif
-#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
# define BOOST_NO_CXX98_BINDERS
#endif
From d23ba31dad1ecfc6032fb8b3ecf19bd92bd3992c Mon Sep 17 00:00:00 2001
From: Sergey Shandar
Date: Tue, 8 Aug 2017 17:36:58 -0700
Subject: [PATCH 23/32] Incorrect MSVC version detection
I know, Boost doesn't support MSVC 5.0 and 6.0. But the expression is invalid. Another way to fix it:
```c++
# if _MSC_VER < 1300
// Note: Versions up to 7.0 aren't supported.
# define BOOST_COMPILER_VERSION 6.0
# elif _MSC_VER < 1310
# define BOOST_COMPILER_VERSION 7.0
```
---
include/boost/config/compiler/visualc.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index c0557de7..9e470f08 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -289,7 +289,7 @@
# endif
# endif
# else
-# if _MSC_VER < 1310
+# if _MSC_VER < 1200
// Note: Versions up to 7.0 aren't supported.
# define BOOST_COMPILER_VERSION 5.0
# elif _MSC_VER < 1300
From 994e3cbba1acf48471b904499f52b9e32fe749df Mon Sep 17 00:00:00 2001
From: Brian Kuhl
Date: Thu, 10 Aug 2017 12:40:22 -0400
Subject: [PATCH 24/32] VxWorks is also using ::intptr_t in boost namespace
---
include/boost/cstdint.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp
index e7799742..5e1411a5 100644
--- a/include/boost/cstdint.hpp
+++ b/include/boost/cstdint.hpp
@@ -369,7 +369,7 @@ namespace boost
#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
|| (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
- || defined(__CYGWIN__) \
+ || defined(__CYGWIN__) || defined(__VXWORKS__) \
|| defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
|| defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || (defined(sun) && !defined(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX)
From b8fe4fe5e0ac0b0ef3d37022749193a634f86ece Mon Sep 17 00:00:00 2001
From: Marshall Clow
Date: Thu, 10 Aug 2017 16:34:53 -0700
Subject: [PATCH 25/32] Bump version number to 1.66
---
include/boost/version.hpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/boost/version.hpp b/include/boost/version.hpp
index 725165f4..d8f2132a 100644
--- a/include/boost/version.hpp
+++ b/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 106500
+#define BOOST_VERSION 106600
//
// 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 to select which library version to link to.
-#define BOOST_LIB_VERSION "1_65"
+#define BOOST_LIB_VERSION "1_66"
#endif
From 17a4997aaa05ce92237c73c82e6d8fb475a0abaf Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Fri, 11 Aug 2017 19:38:00 +0100
Subject: [PATCH 26/32] Update for CUDA version macro changes.
---
include/boost/config/compiler/nvcc.hpp | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
index 43039b5c..907eade9 100644
--- a/include/boost/config/compiler/nvcc.hpp
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -11,6 +11,15 @@
# define BOOST_COMPILER "NVIDIA CUDA C++ Compiler"
#endif
+#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
+# define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 10000 + __CUDACC_VER_MINOR__ * 100 + __CUDACC_VER_BUILD__
+#elif defined(__CUDACC_VER__)
+ define BOOST_CUDA_VERSION __CUDACC_VER__
+#else
+// We don't really know what the CUDA version is, but it's definitely before 7.5:
+# define BOOST_CUDA_VERSION 70000
+#endif
+
// NVIDIA Specific support
// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
#define BOOST_GPU_ENABLED __host__ __device__
@@ -19,11 +28,11 @@
// 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
// check is enough to detect versions < 7.5
-#if !defined(__CUDACC_VER__) || (__CUDACC_VER__ < 70500)
+#if BOOST_CUDA_VERSION < 70500
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// The same bug is back again in 8.0:
-#if (__CUDACC_VER__ > 80000) && (__CUDACC_VER__ < 80100)
+#if (BOOST_CUDA_VERSION > 80000) && (BOOST_CUDA_VERSION < 80100)
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// Most recent CUDA (8.0) has no constexpr support in msvc mode:
@@ -43,7 +52,7 @@
// And this one effects the NVCC front end,
// See https://svn.boost.org/trac/boost/ticket/13049
//
-#if (__CUDACC_VER__ >= 80000) && (__CUDACC_VER__ < 80100)
+#if (BOOST_CUDA_VERSION >= 80000) && (BOOST_CUDA_VERSION < 80100)
# define BOOST_NO_CXX11_NOEXCEPT
#endif
From a0147b73e8bde8f4b2c19c96166353dba8fa9914 Mon Sep 17 00:00:00 2001
From: Minmin Gong
Date: Mon, 14 Aug 2017 18:49:00 -0700
Subject: [PATCH 27/32] Update last known MSVC version to 19.11.25506
(VS2017.3).
---
include/boost/config/compiler/visualc.hpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index 9e470f08..c1cddf04 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -321,8 +321,8 @@
#endif
//
-// last known and checked version is 19.10.25017 (VC++ 2017):
-#if (_MSC_VER > 1910)
+// last known and checked version is 19.11.25506 (VC++ 2017.3):
+#if (_MSC_VER > 1911)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
From 8c9e237f2666e6e89f82d1a0d378f86355c62668 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Thu, 17 Aug 2017 17:51:48 +0100
Subject: [PATCH 28/32] Improve outdated configuration / new compiler messages.
---
include/boost/config/compiler/gcc.hpp | 6 +++---
include/boost/config/compiler/intel.hpp | 2 +-
include/boost/config/compiler/sunpro_cc.hpp | 4 ++--
include/boost/config/compiler/visualc.hpp | 6 +++---
4 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index 12958ab9..c67ab818 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -342,10 +342,10 @@
# error "Compiler not configured - please reconfigure"
#endif
//
-// last known and checked version is 4.9:
-#if (BOOST_GCC_VERSION > 40900)
+// last known and checked version is 7.1:
+#if (BOOST_GCC_VERSION > 70100)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# 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...
diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp
index f549dcb6..00396b03 100644
--- a/include/boost/config/compiler/intel.hpp
+++ b/include/boost/config/compiler/intel.hpp
@@ -551,7 +551,7 @@ template<> struct assert_intrinsic_wchar_t {};
// last known and checked version:
#if (BOOST_INTEL_CXX_VERSION > 1700)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "Boost.Config is older than your compiler - please check for an updated Boost release."
# elif defined(_MSC_VER)
//
// We don't emit this warning any more, since we have so few
diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp
index 2453e7cf..56901840 100644
--- a/include/boost/config/compiler/sunpro_cc.hpp
+++ b/include/boost/config/compiler/sunpro_cc.hpp
@@ -203,8 +203,8 @@
#endif
//
// last known and checked version is 0x590:
-#if (__SUNPRO_CC > 0x590)
+#if (__SUNPRO_CC > 0x5150)
# if defined(BOOST_ASSERT_CONFIG)
-# error "Unknown compiler version - please run the configure tests and report the results"
+# error "Boost.Config is older than your compiler - please check for an updated Boost release."
# endif
#endif
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index c1cddf04..1a3f7824 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -324,8 +324,8 @@
// last known and checked version is 19.11.25506 (VC++ 2017.3):
#if (_MSC_VER > 1911)
# 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")
+# error "Boost.Config is older than your current compiler version."
+# elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE)
+# pragma message("Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an update Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message.")
# endif
#endif
From bb22ab3c5f58600beccd0101ecd84f7b9577cd27 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Fri, 18 Aug 2017 08:04:06 +0100
Subject: [PATCH 29/32] Update sunpro_cc.hpp
---
include/boost/config/compiler/sunpro_cc.hpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp
index 56901840..54ad77a3 100644
--- a/include/boost/config/compiler/sunpro_cc.hpp
+++ b/include/boost/config/compiler/sunpro_cc.hpp
@@ -202,7 +202,7 @@
#error "Compiler not supported or configured - please reconfigure"
#endif
//
-// last known and checked version is 0x590:
+// last known and checked version:
#if (__SUNPRO_CC > 0x5150)
# if defined(BOOST_ASSERT_CONFIG)
# error "Boost.Config is older than your compiler - please check for an updated Boost release."
From b04ae6d7ab57801642c07fae865767dd3f7297cb Mon Sep 17 00:00:00 2001
From: Marcel Raad
Date: Fri, 18 Aug 2017 13:30:07 +0200
Subject: [PATCH 30/32] MSVC: 14.11 supports structured bindings in C++17 mode
---
include/boost/config/compiler/visualc.hpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
index c1cddf04..0bae0023 100644
--- a/include/boost/config/compiler/visualc.hpp
+++ b/include/boost/config/compiler/visualc.hpp
@@ -196,6 +196,12 @@
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
+// C++17 features supported by VC++ 14.1 (Visual Studio 2017) Update 3
+//
+#if (_MSC_VER < 1911) || (_MSVC_LANG < 201703)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+
// MSVC including version 14 has not yet completely
// implemented value-initialization, as is reported:
// "VC++ does not value-initialize members of derived classes without
@@ -220,7 +226,6 @@
// C++ 14:
# define BOOST_NO_CXX14_CONSTEXPR
// C++ 17:
-#define BOOST_NO_CXX17_STRUCTURED_BINDINGS
#define BOOST_NO_CXX17_INLINE_VARIABLES
#define BOOST_NO_CXX17_FOLD_EXPRESSIONS
From 19429a2bde9035eb5f8436d16be4de2f2d8213e3 Mon Sep 17 00:00:00 2001
From: Arkady Shapkin
Date: Fri, 18 Aug 2017 16:19:11 +0300
Subject: [PATCH 31/32] Print _MSVC_LANG for MSVC complier
---
test/config_info.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/config_info.cpp b/test/config_info.cpp
index 65b7a875..178d6fb0 100644
--- a/test/config_info.cpp
+++ b/test/config_info.cpp
@@ -153,6 +153,7 @@ void print_compiler_macros()
PRINT_MACRO(_MSC_EXTENSIONS);
PRINT_MACRO(_MSC_VER);
PRINT_MACRO(_MSC_FULL_VER);
+ PRINT_MACRO(_MSVC_LANG);
PRINT_MACRO(_MT);
PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
// GNUC options:
From 593389dc4b4dae14e6d38bb1c81b7bf70ec21f26 Mon Sep 17 00:00:00 2001
From: jzmaddock
Date: Fri, 18 Aug 2017 18:13:38 +0100
Subject: [PATCH 32/32] Update nvcc.hpp
---
include/boost/config/compiler/nvcc.hpp | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
index 907eade9..f21b9b54 100644
--- a/include/boost/config/compiler/nvcc.hpp
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -12,12 +12,10 @@
#endif
#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
-# define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 10000 + __CUDACC_VER_MINOR__ * 100 + __CUDACC_VER_BUILD__
-#elif defined(__CUDACC_VER__)
- define BOOST_CUDA_VERSION __CUDACC_VER__
+# 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 70000
+# define BOOST_CUDA_VERSION 7000000
#endif
// NVIDIA Specific support
@@ -28,11 +26,11 @@
// 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
// check is enough to detect versions < 7.5
-#if BOOST_CUDA_VERSION < 70500
+#if BOOST_CUDA_VERSION < 7050000
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// The same bug is back again in 8.0:
-#if (BOOST_CUDA_VERSION > 80000) && (BOOST_CUDA_VERSION < 80100)
+#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:
@@ -52,7 +50,7 @@
// And this one effects the NVCC front end,
// See https://svn.boost.org/trac/boost/ticket/13049
//
-#if (BOOST_CUDA_VERSION >= 80000) && (BOOST_CUDA_VERSION < 80100)
+#if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000)
# define BOOST_NO_CXX11_NOEXCEPT
#endif