Merge branch 'develop'

This commit is contained in:
jzmaddock
2014-02-06 19:15:59 +00:00
30 changed files with 306 additions and 66 deletions

View File

@@ -2404,7 +2404,7 @@
<tr> <tr>
<td> <td>
<p> <p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ATOMIC_SP</span></code> <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ATOMIC_SMART_PTR</span></code>
</p> </p>
</td> </td>
<td> <td>
@@ -2415,6 +2415,18 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ATOMIC</span></code>
</p>
</td>
<td>
<p>
The standard library does not provide header &lt;atomic&gt;.
</p>
</td>
</tr>
<tr>
<td> <td>
<p> <p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code> <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>

View File

@@ -951,7 +951,7 @@
</div> </div>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: September 08, 2013 at 08:51:17 GMT</small></p></td> <td align="left"><p><small>Last revised: December 12, 2013 at 19:29:48 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</tr></table> </tr></table>
<hr> <hr>

View File

@@ -580,7 +580,8 @@ that are not yet supported by a particular compiler or library.
[[`BOOST_NO_CXX11_ALIGNAS`][The compiler does not support the `alignas` keyword.]] [[`BOOST_NO_CXX11_ALIGNAS`][The compiler does not support the `alignas` keyword.]]
[[`BOOST_NO_CXX11_ALLOCATOR`][The standard library does not provide a C++11 version of `std::allocator` in <memory>.]] [[`BOOST_NO_CXX11_ALLOCATOR`][The standard library does not provide a C++11 version of `std::allocator` in <memory>.]]
[[`BOOST_NO_CXX11_ATOMIC_SP`][The standard library <memory> does not support atomic smart pointer operations.]] [[`BOOST_NO_CXX11_ATOMIC_SMART_PTR`][The standard library <memory> does not support atomic smart pointer operations.]]
[[`BOOST_NO_CXX11_HDR_ATOMIC`][The standard library does not provide header <atomic>.]]
[[`BOOST_NO_CXX11_HDR_ARRAY`][The standard library does not provide header <array>.]] [[`BOOST_NO_CXX11_HDR_ARRAY`][The standard library does not provide header <array>.]]
[[`BOOST_NO_CXX11_HDR_CHRONO`][The standard library does not provide header <chrono>.]] [[`BOOST_NO_CXX11_HDR_CHRONO`][The standard library does not provide header <chrono>.]]
[[`BOOST_NO_CXX11_HDR_CODECVT`][The standard library does not provide header <codecvt>.]] [[`BOOST_NO_CXX11_HDR_CODECVT`][The standard library does not provide header <codecvt>.]]

View File

@@ -10,6 +10,14 @@
#define BOOST_HAS_PRAGMA_ONCE #define BOOST_HAS_PRAGMA_ONCE
// When compiling with clang before __has_extension was defined,
// even if one writes 'defined(__has_extension) && __has_extension(xxx)',
// clang reports a compiler error. So the only workaround found is:
#ifndef __has_extension
#define __has_extension __has_feature
#endif
#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) #if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
# define BOOST_NO_EXCEPTIONS # define BOOST_NO_EXCEPTIONS
#endif #endif
@@ -39,6 +47,11 @@
// Clang supports "long long" in all compilation modes. // Clang supports "long long" in all compilation modes.
#define BOOST_HAS_LONG_LONG #define BOOST_HAS_LONG_LONG
#if defined(__SIZEOF_INT128__)
# define BOOST_HAS_INT128
#endif
// //
// Dynamic shared object (DSO) and dynamic-link library (DLL) support // Dynamic shared object (DSO) and dynamic-link library (DLL) support
// //
@@ -63,7 +76,10 @@
# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS # define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
#endif #endif
#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L) //
// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t
//
#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
# define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR16_T
# define BOOST_NO_CXX11_CHAR32_T # define BOOST_NO_CXX11_CHAR32_T
#endif #endif

View File

@@ -1,4 +1,5 @@
// (C) Copyright John Maddock 2011. // (C) Copyright John Maddock 2011.
// (C) Copyright Cray, Inc. 2013
// Use, modification and distribution are subject to the // Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file // Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -9,8 +10,8 @@
#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE) #define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
#if _RELEASE < 7 #if _RELEASE < 8
# error "Boost is not configured for Cray compilers prior to version 7, please try the configure script." # error "Boost is not configured for Cray compilers prior to version 8, please try the configure script."
#endif #endif
// //
@@ -22,11 +23,12 @@
#include "boost/config/compiler/common_edg.hpp" #include "boost/config/compiler/common_edg.hpp"
// //
// Cray peculiarities, probably version 7 specific: // Cray peculiarities, probably version 7 specific:
// //
#undef BOOST_NO_CXX11_AUTO_DECLARATIONS #define BOOST_NO_CXX11_AUTO_DECLARATIONS
#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS #define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
#define BOOST_HAS_NRVO #define BOOST_HAS_NRVO
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
@@ -55,7 +57,6 @@
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
#define BOOST_NO_CXX11_CHAR32_T #define BOOST_NO_CXX11_CHAR32_T
#define BOOST_NO_CXX11_CHAR16_T #define BOOST_NO_CXX11_CHAR16_T
#define BOOST_NO_CXX11_ALIGNAS
//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
#define BOOST_MATH_DISABLE_STD_FPCLASSIFY #define BOOST_MATH_DISABLE_STD_FPCLASSIFY
//#define BOOST_HAS_FPCLASSIFY //#define BOOST_HAS_FPCLASSIFY
@@ -63,3 +64,4 @@
#define BOOST_SP_USE_PTHREADS #define BOOST_SP_USE_PTHREADS
#define BOOST_AC_USE_PTHREADS #define BOOST_AC_USE_PTHREADS

View File

@@ -74,8 +74,12 @@
// //
// gcc has "long long" // gcc has "long long"
// Except on Darwin with standard compliance enabled (-pedantic)
// Apple gcc helpfully defines this macro we can query
// //
#define BOOST_HAS_LONG_LONG #if !defined(__DARWIN_NO_LONG_LONG)
# define BOOST_HAS_LONG_LONG
#endif
// //
// gcc implements the named return value optimization since version 3.1 // gcc implements the named return value optimization since version 3.1

View File

@@ -57,11 +57,6 @@
# define BOOST_NO_CXX11_VARIADIC_MACROS # define BOOST_NO_CXX11_VARIADIC_MACROS
#endif #endif
#if defined(UNDER_CE)
// Windows CE does not have a conforming signature for swprintf
# define BOOST_NO_SWPRINTF
#endif
#if _MSC_VER < 1500 // 140X == VC++ 8.0 #if _MSC_VER < 1500 // 140X == VC++ 8.0
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#endif #endif
@@ -91,16 +86,6 @@
# define BOOST_NO_INTRINSIC_WCHAR_T # define BOOST_NO_INTRINSIC_WCHAR_T
#endif #endif
#if defined(_WIN32_WCE) || defined(UNDER_CE)
# define BOOST_NO_SWPRINTF
#endif
// we have ThreadEx or GetSystemTimeAsFileTime unless we're running WindowsCE
#if !defined(_WIN32_WCE) && !defined(UNDER_CE)
# define BOOST_HAS_THREADEX
# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
#endif
// //
// check for exception handling support: // check for exception handling support:
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS) #if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
@@ -120,7 +105,7 @@
# define BOOST_HAS_NRVO # define BOOST_HAS_NRVO
#endif #endif
// //
// disable Win32 API's if compiler extentions are // disable Win32 API's if compiler extensions are
// turned off: // turned off:
// //
#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32) #if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32)
@@ -180,13 +165,13 @@
# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES # define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES # define BOOST_NO_CXX11_VARIADIC_TEMPLATES
# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX # define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
# define BOOST_NO_CXX11_DECLTYPE_N3276
#endif #endif
// C++11 features not supported by any versions // C++11 features not supported by any versions
#define BOOST_NO_CXX11_CHAR16_T #define BOOST_NO_CXX11_CHAR16_T
#define BOOST_NO_CXX11_CHAR32_T #define BOOST_NO_CXX11_CHAR32_T
#define BOOST_NO_CXX11_CONSTEXPR #define BOOST_NO_CXX11_CONSTEXPR
#define BOOST_NO_CXX11_DECLTYPE_N3276
#define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR

View File

@@ -55,16 +55,23 @@
// all translation units (needed for shared_ptr etc). // all translation units (needed for shared_ptr etc).
// //
#ifdef _WIN32_WCE
# define BOOST_NO_ANSI_APIS
#else
# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
#endif
#ifndef BOOST_HAS_PTHREADS #ifndef BOOST_HAS_PTHREADS
# define BOOST_HAS_WINTHREADS # define BOOST_HAS_WINTHREADS
#endif #endif
//
// WinCE configuration:
//
#if defined(_WIN32_WCE) || defined(UNDER_CE)
# define BOOST_NO_ANSI_APIS
// Windows CE does not have a conforming signature for swprintf
# define BOOST_NO_SWPRINTF
#else
# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
# define BOOST_HAS_THREADEX
# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
#endif
#ifndef BOOST_DISABLE_WIN32 #ifndef BOOST_DISABLE_WIN32
// WEK: Added // WEK: Added
#define BOOST_HAS_FTIME #define BOOST_HAS_FTIME

View File

@@ -86,6 +86,15 @@
# define BOOST_NO_STD_LOCALE # define BOOST_NO_STD_LOCALE
#endif #endif
// 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)))
#include <exception>
#endif
#include <typeinfo> #include <typeinfo>
#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__)
# define BOOST_NO_STD_TYPEINFO # define BOOST_NO_STD_TYPEINFO
@@ -125,7 +134,6 @@
# define BOOST_NO_CXX11_HDR_MUTEX # define BOOST_NO_CXX11_HDR_MUTEX
# define BOOST_NO_CXX11_HDR_RATIO # define BOOST_NO_CXX11_HDR_RATIO
# define BOOST_NO_CXX11_HDR_THREAD # define BOOST_NO_CXX11_HDR_THREAD
# define BOOST_NO_CXX11_ALLOCATOR
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
#endif #endif
@@ -133,6 +141,8 @@
// //
#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610 #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
# define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_ALLOCATOR
#endif #endif
#ifdef _CPPLIB_VER #ifdef _CPPLIB_VER
@@ -146,12 +156,3 @@
#else #else
# define BOOST_STDLIB "Dinkumware standard library version 1.x" # define BOOST_STDLIB "Dinkumware standard library version 1.x"
#endif #endif

View File

@@ -58,6 +58,7 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
// //
// Intrinsic type_traits support. // Intrinsic type_traits support.

View File

@@ -30,6 +30,7 @@
# define BOOST_NO_CXX11_HDR_FUTURE # define BOOST_NO_CXX11_HDR_FUTURE
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_HDR_TYPE_TRAITS
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_HDR_ATOMIC
// libc++ uses a non-standard messages_base // libc++ uses a non-standard messages_base
#define BOOST_NO_STD_MESSAGES #define BOOST_NO_STD_MESSAGES

View File

@@ -156,6 +156,12 @@
# define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_HDR_CHRONO
# define BOOST_NO_CXX11_ALLOCATOR # define BOOST_NO_CXX11_ALLOCATOR
#endif #endif
// C++0x features in GCC 4.7.0 and later
//
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
// Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types:
# define BOOST_NO_CXX11_HDR_ATOMIC
#endif
// C++0x headers not yet (fully!) implemented // C++0x headers not yet (fully!) implemented
// //
# define BOOST_NO_CXX11_HDR_THREAD # define BOOST_NO_CXX11_HDR_THREAD

View File

@@ -47,6 +47,7 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_STDLIB "Modena C++ standard library" #define BOOST_STDLIB "Modena C++ standard library"

View File

@@ -71,6 +71,7 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__) #define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)

View File

@@ -183,4 +183,5 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC

View File

@@ -141,6 +141,7 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_STDLIB "SGI standard library" #define BOOST_STDLIB "SGI standard library"

View File

@@ -231,6 +231,7 @@ namespace boost { using std::min; using std::max; }
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT) #define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)

View File

@@ -47,6 +47,7 @@
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_SMART_PTR # define BOOST_NO_CXX11_SMART_PTR
# define BOOST_NO_CXX11_HDR_FUNCTIONAL # define BOOST_NO_CXX11_HDR_FUNCTIONAL
# define BOOST_NO_CXX11_HDR_ATOMIC
#define BOOST_STDLIB "Visual Age default standard library" #define BOOST_STDLIB "Visual Age default standard library"

View File

@@ -591,7 +591,13 @@ namespace std{ using ::type_info; }
# define BOOST_NOINLINE __declspec(noinline) # define BOOST_NOINLINE __declspec(noinline)
# elif defined(__GNUC__) && __GNUC__ > 3 # elif defined(__GNUC__) && __GNUC__ > 3
// Clang also defines __GNUC__ (as 4) // Clang also defines __GNUC__ (as 4)
# define BOOST_NOINLINE __attribute__ ((__noinline__)) # if defined(__CUDACC__)
// nvcc doesn't always parse __noinline__,
// see: https://svn.boost.org/trac/boost/ticket/9392
# define BOOST_NOINLINE __attribute__ ((noinline))
# else
# define BOOST_NOINLINE __attribute__ ((__noinline__))
# endif
# else # else
# define BOOST_NOINLINE # define BOOST_NOINLINE
# endif # endif
@@ -937,5 +943,14 @@ namespace std{ using ::type_info; }
#define BOOST_HAS_VARIADIC_TMPL #define BOOST_HAS_VARIADIC_TMPL
#endif #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
// to continue at their own risk if they really want to:
//
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_CONFIG_ALLOW_DEPRECATED)
# error "You are using a compiler which lacks features which are now a minimum requirement in order to use Boost, define BOOST_CONFIG_ALLOW_DEPRECATED if you want to continue at your own risk!!!"
#endif
#endif #endif

View File

@@ -1,7 +1,7 @@
# #
# Regression test Jamfile for boost configuration setup. # Regression test Jamfile for boost configuration setup.
# *** DO NOT EDIT THIS FILE BY HAND *** # *** DO NOT EDIT THIS FILE BY HAND ***
# This file was automatically generated on Sun Apr 28 18:36:49 2013 # This file was automatically generated on Thu Dec 12 19:09:40 2013
# by libs/config/tools/generate.cpp # by libs/config/tools/generate.cpp
# Copyright John Maddock. # Copyright John Maddock.
# Use, modification and distribution are subject to the # Use, modification and distribution are subject to the
@@ -226,9 +226,6 @@ test-suite "BOOST_NO_CWCHAR" :
test-suite "BOOST_NO_CWCTYPE" : test-suite "BOOST_NO_CWCTYPE" :
[ run ../no_cwctype_pass.cpp ] [ run ../no_cwctype_pass.cpp ]
[ compile-fail ../no_cwctype_fail.cpp ] ; [ compile-fail ../no_cwctype_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_RAW_LITERALS" :
[ run ../no_raw_literals_pass.cpp ]
[ compile-fail ../no_raw_literals_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_ALIGNAS" : test-suite "BOOST_NO_CXX11_ALIGNAS" :
[ run ../no_cxx11_alignas_pass.cpp ] [ run ../no_cxx11_alignas_pass.cpp ]
[ compile-fail ../no_cxx11_alignas_fail.cpp ] ; [ compile-fail ../no_cxx11_alignas_fail.cpp ] ;
@@ -241,6 +238,9 @@ test-suite "BOOST_NO_CXX11_ATOMIC_SMART_PTR" :
test-suite "BOOST_NO_CXX11_HDR_ARRAY" : test-suite "BOOST_NO_CXX11_HDR_ARRAY" :
[ run ../no_cxx11_hdr_array_pass.cpp ] [ run ../no_cxx11_hdr_array_pass.cpp ]
[ compile-fail ../no_cxx11_hdr_array_fail.cpp ] ; [ compile-fail ../no_cxx11_hdr_array_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_HDR_ATOMIC" :
[ run ../no_cxx11_hdr_atomic_pass.cpp ]
[ compile-fail ../no_cxx11_hdr_atomic_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_HDR_CHRONO" : test-suite "BOOST_NO_CXX11_HDR_CHRONO" :
[ run ../no_cxx11_hdr_chrono_pass.cpp ] [ run ../no_cxx11_hdr_chrono_pass.cpp ]
[ compile-fail ../no_cxx11_hdr_chrono_fail.cpp ] ; [ compile-fail ../no_cxx11_hdr_chrono_fail.cpp ] ;
@@ -436,6 +436,9 @@ test-suite "BOOST_NO_POINTER_TO_MEMBER_CONST" :
test-suite "BOOST_NO_CXX11_RANGE_BASED_FOR" : test-suite "BOOST_NO_CXX11_RANGE_BASED_FOR" :
[ run ../no_range_based_for_pass.cpp ] [ run ../no_range_based_for_pass.cpp ]
[ compile-fail ../no_range_based_for_fail.cpp ] ; [ compile-fail ../no_range_based_for_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_RAW_LITERALS" :
[ run ../no_raw_literals_pass.cpp ]
[ compile-fail ../no_raw_literals_fail.cpp ] ;
test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" :
[ run ../no_ret_det_pass.cpp ] [ run ../no_ret_det_pass.cpp ]
[ compile-fail ../no_ret_det_fail.cpp ] ; [ compile-fail ../no_ret_det_fail.cpp ] ;

View File

@@ -24,15 +24,15 @@ constexpr const int* xp = addr(x);
struct A struct A
{ {
constexpr A(int i) : val(i) { } constexpr A(int i) : val(i) { }
constexpr operator int() { return val; } constexpr operator int()const { return val; }
constexpr operator long() { return 43; } constexpr operator long()const { return 43; }
private: private:
int val; int val;
}; };
template<int> struct X { }; template<int> struct X { };
constexpr A a = 42; constexpr const A a = 42;
X<a> xx; // OK: unique conversion to int X<a> xx; // OK: unique conversion to int

View File

@@ -28,10 +28,14 @@ int test()
std::allocator_arg_t aat; std::allocator_arg_t aat;
std::uses_allocator<int, std::allocator<int> > ua; std::uses_allocator<int, std::allocator<int> > ua;
std::allocator_traits<std::allocator<int> > at; std::allocator_traits<std::allocator<int> > at;
std::allocator<int> ia;
std::allocator_traits<std::allocator<int> >::rebind_alloc<void*> ra(ia);
std::allocator<void*>* pva = &ra;
(void)aat; (void)aat;
(void)ua; (void)ua;
(void)at; (void)at;
(void)pva;
return 0; return 0;
} }

View File

@@ -0,0 +1,89 @@
// (C) Copyright John Maddock 2013
// 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 more information.
// MACRO: BOOST_NO_CXX11_HDR_ATOMIC
// TITLE: C++11 <atomic> header is either not present or too broken to be used
// DESCRIPTION: The compiler does not support the C++11 header <atomic>
#include <atomic>
#if !defined(ATOMIC_BOOL_LOCK_FREE) || !defined(ATOMIC_CHAR_LOCK_FREE) || !defined(ATOMIC_CHAR16_T_LOCK_FREE) \
|| !defined(ATOMIC_CHAR32_T_LOCK_FREE) || !defined(ATOMIC_WCHAR_T_LOCK_FREE) || !defined(ATOMIC_SHORT_LOCK_FREE)\
|| !defined(ATOMIC_INT_LOCK_FREE) || !defined(ATOMIC_LONG_LOCK_FREE) || !defined(ATOMIC_LLONG_LOCK_FREE)\
|| !defined(ATOMIC_POINTER_LOCK_FREE)
# error "required macros not defined"
#endif
namespace boost_no_cxx11_hdr_atomic {
int test()
{
std::memory_order m = static_cast<std::memory_order>(std::memory_order_relaxed | std::memory_order_consume | std::memory_order_acquire | std::memory_order_release
| std::memory_order_acq_rel | std::memory_order_seq_cst);
std::atomic<int> a1;
std::atomic<unsigned> a2;
std::atomic<void*> a3;
a1.is_lock_free();
a1.store(1);
a1.load();
a1.exchange(2);
int v;
a1.compare_exchange_weak(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
a1.compare_exchange_strong(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
a1.fetch_add(2);
a1.fetch_sub(3);
a1.fetch_and(3);
a1.fetch_or(1);
a1.fetch_xor(1);
a1++;
++a1;
a1--;
--a1;
a1 += 2;
a1 -= 2;
a1 &= 1;
a1 |= 2;
a1 ^= 3;
a3.store(&v);
a3.fetch_add(1);
a3.fetch_sub(1);
++a3;
--a3;
a3++;
a3--;
a3 += 1;
a3 -= 1;
std::atomic_is_lock_free(&a1);
// This produces linker errors on Mingw32 for some reason, probably not required anyway for most uses??
//std::atomic_init(&a1, 2);
std::atomic_store(&a1, 3);
std::atomic_store_explicit(&a1, 3, std::memory_order_relaxed);
std::atomic_load(&a1);
std::atomic_load_explicit(&a1, std::memory_order_relaxed);
std::atomic_exchange(&a1, 3);
std::atomic_compare_exchange_weak(&a1, &v, 2);
std::atomic_compare_exchange_strong(&a1, &v, 2);
std::atomic_compare_exchange_weak_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
std::atomic_compare_exchange_strong_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
std::atomic_flag f = ATOMIC_FLAG_INIT;
f.test_and_set(std::memory_order_relaxed);
f.test_and_set();
f.clear(std::memory_order_relaxed);
f.clear();
std::atomic_thread_fence(std::memory_order_relaxed);
std::atomic_signal_fence(std::memory_order_relaxed);
return 0;
}
}

View File

@@ -19,7 +19,7 @@ struct my_literal
constexpr my_literal() : val(0) {} constexpr my_literal() : val(0) {}
constexpr my_literal(int i) : val(i) {} constexpr my_literal(int i) : val(i) {}
constexpr my_literal(const my_literal& a) : val(a.val) {} constexpr my_literal(const my_literal& a) : val(a.val) {}
constexpr bool operator==(const my_literal& a) { return val == a.val; } constexpr bool operator==(const my_literal& a) const { return val == a.val; }
int val; int val;
}; };

View File

@@ -1008,6 +1008,7 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE); PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE);
PRINT_MACRO(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS);
PRINT_MACRO(BOOST_NO_CXX11_HDR_ARRAY); PRINT_MACRO(BOOST_NO_CXX11_HDR_ARRAY);
PRINT_MACRO(BOOST_NO_CXX11_HDR_ATOMIC);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CHRONO); PRINT_MACRO(BOOST_NO_CXX11_HDR_CHRONO);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CODECVT); PRINT_MACRO(BOOST_NO_CXX11_HDR_CODECVT);
PRINT_MACRO(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE); PRINT_MACRO(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE);
@@ -1106,6 +1107,8 @@ void print_boost_macros()
// END GENERATED BLOCK // END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_INTEL);

View File

@@ -1,4 +1,4 @@
// This file was automatically generated on Sun Apr 28 18:36:49 2013 // This file was automatically generated on Thu Dec 12 19:09:40 2013
// by libs/config/tools/generate.cpp // by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4. // Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the // Use, modification and distribution are subject to the
@@ -122,6 +122,11 @@ namespace boost_no_cxx11_atomic_smart_ptr = empty_boost;
#else #else
namespace boost_no_cxx11_hdr_array = empty_boost; namespace boost_no_cxx11_hdr_array = empty_boost;
#endif #endif
#ifndef BOOST_NO_CXX11_HDR_ATOMIC
#include "boost_no_cxx11_hdr_atomic.ipp"
#else
namespace boost_no_cxx11_hdr_atomic = empty_boost;
#endif
#ifndef BOOST_NO_CXX11_HDR_CHRONO #ifndef BOOST_NO_CXX11_HDR_CHRONO
#include "boost_no_cxx11_hdr_chrono.ipp" #include "boost_no_cxx11_hdr_chrono.ipp"
#else #else
@@ -212,11 +217,6 @@ namespace boost_no_cxx11_hdr_unordered_set = empty_boost;
#else #else
namespace boost_no_cxx11_inline_namespaces = empty_boost; namespace boost_no_cxx11_inline_namespaces = empty_boost;
#endif #endif
#ifndef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#include "boost_no_cxx11_trailing_result_types.ipp"
#else
namespace boost_no_cxx11_trailing_result_types = empty_boost;
#endif
#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
#include "boost_no_cxx11_numeric_limits.ipp" #include "boost_no_cxx11_numeric_limits.ipp"
#else #else
@@ -227,6 +227,11 @@ namespace boost_no_cxx11_numeric_limits = empty_boost;
#else #else
namespace boost_no_cxx11_smart_ptr = empty_boost; namespace boost_no_cxx11_smart_ptr = empty_boost;
#endif #endif
#ifndef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#include "boost_no_cxx11_trailing_result_types.ipp"
#else
namespace boost_no_cxx11_trailing_result_types = empty_boost;
#endif
#ifndef BOOST_NO_CXX11_USER_DEFINED_LITERALS #ifndef BOOST_NO_CXX11_USER_DEFINED_LITERALS
#include "boost_no_cxx11_user_lit.ipp" #include "boost_no_cxx11_user_lit.ipp"
#else #else
@@ -1266,6 +1271,11 @@ int main( int, char *[] )
std::cerr << "Failed test for BOOST_NO_CXX11_HDR_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl; std::cerr << "Failed test for BOOST_NO_CXX11_HDR_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count; ++error_count;
} }
if(0 != boost_no_cxx11_hdr_atomic::test())
{
std::cerr << "Failed test for BOOST_NO_CXX11_HDR_ATOMIC at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count;
}
if(0 != boost_no_cxx11_hdr_chrono::test()) if(0 != boost_no_cxx11_hdr_chrono::test())
{ {
std::cerr << "Failed test for BOOST_NO_CXX11_HDR_CHRONO at: " << __FILE__ << ":" << __LINE__ << std::endl; std::cerr << "Failed test for BOOST_NO_CXX11_HDR_CHRONO at: " << __FILE__ << ":" << __LINE__ << std::endl;

View File

@@ -0,0 +1,37 @@
// This file was automatically generated on Thu Dec 12 19:07:12 2013
// 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_CXX11_HDR_ATOMIC
// This file should not compile, if it does then
// BOOST_NO_CXX11_HDR_ATOMIC should not be defined.
// See file boost_no_cxx11_hdr_atomic.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 <boost/config.hpp>
#include "test.hpp"
#ifdef BOOST_NO_CXX11_HDR_ATOMIC
#include "boost_no_cxx11_hdr_atomic.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx11_hdr_atomic::test();
}

View File

@@ -0,0 +1,37 @@
// This file was automatically generated on Thu Dec 12 19:07:12 2013
// 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_CXX11_HDR_ATOMIC
// This file should compile, if it does not then
// BOOST_NO_CXX11_HDR_ATOMIC should be defined.
// See file boost_no_cxx11_hdr_atomic.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 <boost/config.hpp>
#include "test.hpp"
#ifndef BOOST_NO_CXX11_HDR_ATOMIC
#include "boost_no_cxx11_hdr_atomic.ipp"
#else
namespace boost_no_cxx11_hdr_atomic = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx11_hdr_atomic::test();
}

View File

@@ -32,6 +32,6 @@
int main( int, char *[] ) int main( int, char *[] )
{ {
return boost_no_decltype_n3276::test(); return boost_no_cxx11_decltype_n3276::test();
} }

View File

@@ -27,11 +27,11 @@
#ifndef BOOST_NO_CXX11_DECLTYPE_N3276 #ifndef BOOST_NO_CXX11_DECLTYPE_N3276
#include "boost_no_decltype_n3276.ipp" #include "boost_no_decltype_n3276.ipp"
#else #else
namespace boost_no_decltype_n3276 = empty_boost; namespace boost_no_cxx11_decltype_n3276 = empty_boost;
#endif #endif
int main( int, char *[] ) int main( int, char *[] )
{ {
return boost_no_decltype_n3276::test(); return boost_no_cxx11_decltype_n3276::test();
} }