From 73bce850122a98aeaccf991810de9f51e50279f9 Mon Sep 17 00:00:00 2001 From: "K. Noel Belcourt" Date: Thu, 17 Jul 2008 19:19:27 +0000 Subject: [PATCH 001/435] Update to support pgi-7.2, now that I've started testing with it. [SVN r47512] --- include/boost/config/compiler/pgi.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 0f88d38e..0c17d978 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -16,7 +16,7 @@ // if no threading API is detected. // -#if (__PGIC__ == 7) && (__PGIC_MINOR__ == 1) +#if (__PGIC__ == 7) && (__PGIC_MINOR__ <= 2) #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #define BOOST_NO_TWO_PHASE_NAME_LOOKUP From 8aed5ffeaacbdeea30fa5da037acf696645acfc9 Mon Sep 17 00:00:00 2001 From: Daryle Walker Date: Thu, 24 Jul 2008 11:43:02 +0000 Subject: [PATCH 002/435] Encapsulated the mutually exclusive 'long long' and '__int64' type families into a single interface [SVN r47754] --- include/boost/limits.hpp | 46 +++++++++++----------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/include/boost/limits.hpp b/include/boost/limits.hpp index 6d01daa3..e5cf9551 100644 --- a/include/boost/limits.hpp +++ b/include/boost/limits.hpp @@ -19,40 +19,29 @@ # include #endif +#include // for BOOST_HAS_XINT, etc. + #if (defined(BOOST_HAS_LONG_LONG) && defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)) \ || (defined(BOOST_HAS_MS_INT64) && defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)) // Add missing specializations for numeric_limits: -#ifdef BOOST_HAS_MS_INT64 -# define BOOST_LLT __int64 -# define BOOST_ULLT unsigned __int64 -#else -# define BOOST_LLT ::boost::long_long_type -# define BOOST_ULLT ::boost::ulong_long_type +#if !defined(BOOST_HAS_XINT) || !(BOOST_HAS_XINT) +#error "Shouldn't have gotten here based on preceeding preprocessor statements" #endif +#define BOOST_LLT ::boost::detail::xint_t +#define BOOST_ULLT ::boost::detail::uxint_t #include // for CHAR_BIT namespace std { template<> - class numeric_limits + class numeric_limits< BOOST_LLT > { public: BOOST_STATIC_CONSTANT(bool, is_specialized = true); -#ifdef BOOST_HAS_MS_INT64 - static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x8000000000000000i64; } - static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x7FFFFFFFFFFFFFFFi64; } -#elif defined(LLONG_MAX) - static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MIN; } - static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MAX; } -#elif defined(LONGLONG_MAX) - static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MIN; } - static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MAX; } -#else - static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 1LL << (sizeof(BOOST_LLT) * CHAR_BIT - 1); } - static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~(min)(); } -#endif + static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MIN; } + static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MAX; } BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1); BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000); BOOST_STATIC_CONSTANT(bool, is_signed = true); @@ -88,24 +77,13 @@ namespace std }; template<> - class numeric_limits + class numeric_limits< BOOST_ULLT > { public: BOOST_STATIC_CONSTANT(bool, is_specialized = true); -#ifdef BOOST_HAS_MS_INT64 - static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0ui64; } - static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0xFFFFFFFFFFFFFFFFui64; } -#elif defined(ULLONG_MAX) && defined(ULLONG_MIN) - static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MIN; } - static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MAX; } -#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN) - static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MIN; } - static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MAX; } -#else - static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0uLL; } - static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~0uLL; } -#endif + static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return (BOOST_ULLT) 0u; } + static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_UXINT_MAX; } BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT); BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000); BOOST_STATIC_CONSTANT(bool, is_signed = false); From 59ff24b6250aed1d67fa79393d104752c6a1df54 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 28 Jul 2008 15:23:24 +0000 Subject: [PATCH 003/435] Fixes #2084. [SVN r47853] --- include/boost/config/platform/bsd.hpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index df230850..810d3707 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -43,7 +43,19 @@ // // No wide character support in the BSD header files: // -#if !(defined(__FreeBSD__) && (__FreeBSD__ >= 5)) +#if defined(__NetBSD__) +#define __NetBSD_GCC__ (__GNUC__ * 1000000 \ + + __GNUC_MINOR__ * 1000 \ + + __GNUC_PATCHLEVEL__) +// XXX - the following is required until c++config.h +// defines _GLIBCXX_HAVE_SWPRINTF and friends +// or the preprocessor conditionals are removed +// from the cwchar header. +#define _GLIBCXX_HAVE_SWPRINTF 1 +#endif + +#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \ + || (__NetBSD_GCC__ >= 2095003)) # define BOOST_NO_CWCHAR #endif // From 2c40b2fa4d4f1ed0eb0e116234a3def4835236ff Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 7 Aug 2008 09:17:52 +0000 Subject: [PATCH 004/435] Shortened file names so we don't exceed the Windows path limit. [SVN r48011] --- test/link/test/Jamfile.v2 | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/test/link/test/Jamfile.v2 b/test/link/test/Jamfile.v2 index 3de72240..234da7cc 100644 --- a/test/link/test/Jamfile.v2 +++ b/test/link/test/Jamfile.v2 @@ -72,40 +72,41 @@ autolink-lib link_test : ../link_test.cpp explicit link_test ; run ../main.cpp link_test - : : : msvc-8.0:no static static single debug : link_test_static_single_debug ; + : : : msvc-8.0:no static static single debug : link_test_ssd ; run ../main.cpp link_test - : : : msvc-8.0:no static static single release : link_test_static_single_release ; + : : : msvc-8.0:no static static single release : link_test_ssr ; run ../main.cpp link_test - : : : static static multi debug : link_test_static_multi_debug ; + : : : static static multi debug : link_test_smd ; run ../main.cpp link_test - : : : static static multi release : link_test_static_multi_release ; + : : : static static multi release : link_test_smr ; run ../main.cpp link_test - : : : static shared multi debug : link_test_dyn_multi_debug ; + : : : static shared multi debug : link_test_dmd ; run ../main.cpp link_test - : : : static shared multi release : link_test_dyn_multi_release ; + : : : static shared multi release : link_test_dmr ; run ../main.cpp link_test - : : : static shared single debug : link_test_dyn_single_debug ; + : : : static shared single debug : link_test_dsd ; run ../main.cpp link_test - : : : static shared single release : link_test_dyn_single_release ; + : : : static shared single release : link_test_dsr ; run ../main.cpp link_test - : : : BOOST_DYN_LINK=1 shared shared multi debug : link_test_dll_dyn_multi_debug ; + : : : BOOST_DYN_LINK=1 shared shared multi debug : link_test_dll_dmd ; run ../main.cpp link_test - : : : BOOST_DYN_LINK=1 shared shared multi release : link_test_dll_dyn_multi_release ; + : : : BOOST_DYN_LINK=1 shared shared multi release : link_test_dll_dmr ; run ../main.cpp link_test - : : : BOOST_DYN_LINK=1 shared shared single debug : link_test_dll_dyn_single_debug ; + : : : BOOST_DYN_LINK=1 shared shared single debug : link_test_dll_dsd ; run ../main.cpp link_test - : : : BOOST_DYN_LINK=1 shared shared single release : link_test_dll_dyn_single_release ; + : : : BOOST_DYN_LINK=1 shared shared single release : link_test_dll_dsr ; + From e7ac7ebd7b5b61d7b91cd3a490b7c2bf920b5624 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 10 Aug 2008 09:12:02 +0000 Subject: [PATCH 005/435] Added support to the TR1 library. Added Borland and Sun workaround headers to the TR1 lib. Added a "no tr1" version of cmath to Boost.Config and made use of it throughout Boost.Math. [SVN r48054] --- include/boost/config/no_tr1/cmath.hpp | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 include/boost/config/no_tr1/cmath.hpp diff --git a/include/boost/config/no_tr1/cmath.hpp b/include/boost/config/no_tr1/cmath.hpp new file mode 100644 index 00000000..d8268d84 --- /dev/null +++ b/include/boost/config/no_tr1/cmath.hpp @@ -0,0 +1,28 @@ +// (C) Copyright John Maddock 2008. +// 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) +// +// The aim of this header is just to include but to do +// so in a way that does not result in recursive inclusion of +// the Boost TR1 components if boost/tr1/tr1/cmath is in the +// include search path. We have to do this to avoid circular +// dependencies: +// + +#ifndef BOOST_CONFIG_CMATH +# define BOOST_CONFIG_CMATH + +# ifndef BOOST_TR1_NO_RECURSION +# define BOOST_TR1_NO_RECURSION +# define BOOST_CONFIG_NO_CMATH_RECURSION +# endif + +# include + +# ifdef BOOST_CONFIG_NO_CMATH_RECURSION +# undef BOOST_TR1_NO_RECURSION +# undef BOOST_CONFIG_NO_CMATH_RECURSION +# endif + +#endif From 81d37eb28b965533ba7680500363b6ffb42d0a4e Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 18 Aug 2008 15:23:57 +0000 Subject: [PATCH 006/435] Begin 1.37.0 [SVN r48196] --- 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 b62c4111..a07d638d 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 103600 +#define BOOST_VERSION 103700 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_36" +#define BOOST_LIB_VERSION "1_37" #endif From 1884e62119d409ef605a2734332112d76d574b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Hunold?= Date: Wed, 20 Aug 2008 11:51:44 +0000 Subject: [PATCH 007/435] Fix: Added check for already defined BOOST_NO_HASH and BOOST_NO_SLIST [SVN r48254] --- include/boost/config/suffix.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 2e72b3f5..0c8054d7 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -266,11 +266,11 @@ // Define BOOST_NO_SLIST and BOOST_NO_HASH if required. // Note that this is for backwards compatibility only. // -# ifndef BOOST_HAS_SLIST +# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST) # define BOOST_NO_SLIST # endif -# ifndef BOOST_HAS_HASH +# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH) # define BOOST_NO_HASH # endif From 7deb7200bce1e1f7823439faaff4ae7f4b48f006 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 20 Aug 2008 19:32:23 +0000 Subject: [PATCH 008/435] Fix the link to the limits documentation. [SVN r48266] --- include/boost/limits.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/limits.hpp b/include/boost/limits.hpp index e5cf9551..084b8739 100644 --- a/include/boost/limits.hpp +++ b/include/boost/limits.hpp @@ -6,7 +6,7 @@ // // use this header as a workaround for missing -// See http://www.boost.org/libs/utility/limits.html for documentation. +// See http://www.boost.org/libs/compatibility/index.html for documentation. #ifndef BOOST_LIMITS #define BOOST_LIMITS From 9ca5a343692fcd38861faf2d8cfcf60640829fa7 Mon Sep 17 00:00:00 2001 From: Gennaro Prota Date: Fri, 22 Aug 2008 11:03:54 +0000 Subject: [PATCH 009/435] in boost/config/suffix.hpp: changed copyright notices to the generally preferred form; fixed license reference; added trailing slashes to a couple of URLs; fixed a typo ("analagous"); slightly reformatted my own code and comments (normally we wouldn't have touched this file for non-essential issues, but since it has already been modified, recently...) [SVN r48290] --- include/boost/config/suffix.hpp | 54 ++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 0c8054d7..9b1eecbe 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -1,21 +1,22 @@ // Boost config.hpp configuration header file ------------------------------// -// (C) Copyright John Maddock 2001 - 2003. -// (C) Copyright Darin Adler 2001. -// (C) Copyright Peter Dimov 2001. -// (C) Copyright Bill Kempf 2002. -// (C) Copyright Jens Maurer 2002. -// (C) Copyright David Abrahams 2002 - 2003. -// (C) Copyright Gennaro Prota 2003. -// (C) Copyright Eric Friedman 2003. -// 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) +// Copyright (c) 2001-2003 John Maddock +// Copyright (c) 2001 Darin Adler +// Copyright (c) 2001 Peter Dimov +// Copyright (c) 2002 Bill Kempf +// Copyright (c) 2002 Jens Maurer +// Copyright (c) 2002-2003 David Abrahams +// Copyright (c) 2003 Gennaro Prota +// Copyright (c) 2003 Eric Friedman +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org for most recent version. +// See http://www.boost.org/ for most recent version. // Boost config.hpp policy and rationale documentation has been moved to -// http://www.boost.org/libs/config +// http://www.boost.org/libs/config/ // // This file is intended to be stable, and relatively unchanging. // It should contain boilerplate code only - no compiler specific @@ -372,7 +373,7 @@ namespace std { // with // BOOST_USE_FACET(Type, loc); // Note do not add a std:: prefix to the front of BOOST_USE_FACET! -// Use for BOOST_HAS_FACET is analagous. +// Use for BOOST_HAS_FACET is analogous. #if defined(BOOST_NO_STD_USE_FACET) # ifdef BOOST_HAS_TWO_ARG_USE_FACET @@ -453,12 +454,11 @@ namespace boost{ // BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------// // -// Some compilers have problems with function templates whose -// template parameters don't appear in the function parameter -// list (basically they just link one instantiation of the -// template in the final executable). These macros provide a -// uniform way to cope with the problem with no effects on the -// calling syntax. +// Some compilers have problems with function templates whose template +// parameters don't appear in the function parameter list (basically +// they just link one instantiation of the template in the final +// executable). These macros provide a uniform way to cope with the +// problem with no effects on the calling syntax. // Example: // @@ -499,18 +499,18 @@ namespace boost{ # include "boost/type.hpp" # include "boost/non_type.hpp" -# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type* = 0 -# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type* -# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type* = 0 +# define BOOST_EXPLICIT_TEMPLATE_TYPE(t) boost::type* = 0 +# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) boost::type* +# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) boost::non_type* = 0 # define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) boost::non_type* -# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \ +# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) \ , BOOST_EXPLICIT_TEMPLATE_TYPE(t) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \ +# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t) \ , BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \ +# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v) \ , BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v) -# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \ +# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) \ , BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v) #else From 5f1c6a0d731417296dee16d0df1efc16a0d6e907 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 25 Aug 2008 10:06:15 +0000 Subject: [PATCH 010/435] Add BOOST_NO_RTTI as per feature request #2241. [SVN r48372] --- doc/html/boost_config/acknowledgements.html | 6 +- .../boost_config/boost_macro_reference.html | 40 +++++++++---- .../guidelines_for_boost_authors.html | 12 ++-- doc/html/boost_config/rationale.html | 8 +-- doc/html/index.html | 38 ++++++------- doc/macro_reference.qbk | 4 ++ include/boost/config/compiler/visualc.hpp | 3 + test/all/Jamfile.v2 | 5 +- test/boost_no_rtti.ipp | 57 +++++++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++- test/no_rtti_fail.cpp | 37 ++++++++++++ test/no_rtti_pass.cpp | 37 ++++++++++++ 13 files changed, 216 insertions(+), 45 deletions(-) create mode 100644 test/boost_no_rtti.ipp create mode 100644 test/no_rtti_fail.cpp create mode 100644 test/no_rtti_pass.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 9c596611..901f8a5e 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -23,14 +23,14 @@

Beman Dawes provided the original config.hpp and part of this document.

- Vesa Karvonen provided a description of the principles (see rationale) + Vesa Karvonen provided a description of the principles (see rationale) and put together an early version of the current configuration setup.

diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 10467132..a76b9e0e 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -24,7 +24,7 @@

Macros @@ -46,7 +46,7 @@

@@ -742,6 +742,24 @@ + +

+ BOOST_NO_RTTI +

+ + +

+ Compiler +

+ + +

+ The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. +

+ + +

BOOST_NO_SFINAE @@ -1204,7 +1222,7 @@

@@ -2371,7 +2389,7 @@

@@ -2664,7 +2682,7 @@

@@ -2903,7 +2921,7 @@

@@ -2920,7 +2938,7 @@

@@ -2978,7 +2996,7 @@

diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 2e16141f..b2297d96 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -24,7 +24,7 @@

@@ -105,7 +105,7 @@

@@ -184,7 +184,7 @@

@@ -283,7 +283,7 @@

diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index cdd610f0..499cac66 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -24,7 +24,7 @@

The problem
@@ -41,7 +41,7 @@

Consider a situation in which you are concurrently developing on multiple @@ -104,7 +104,7 @@

The approach taken by boost's configuration headers is to separate configuration diff --git a/doc/html/index.html b/doc/html/index.html index 75b113f5..f11a3c2e 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -94,7 +94,7 @@
@@ -113,7 +113,7 @@

@@ -152,10 +152,10 @@ them usable by both Boost library and user code.

- Boost informational or helper + Boost informational or helper macros are designed for use by Boost users as well as for our own internal - use. Note however, that the feature test - and defect test macros were designed + use. Note however, that the feature test + and defect test macros were designed for internal use by Boost libraries, not user code, so they can change at any time (though no gratuitous changes are made to them). Boost library problems resulting from changes to the configuration macros are caught by the Boost @@ -170,7 +170,7 @@

@@ -320,7 +320,7 @@

@@ -684,7 +684,7 @@

@@ -709,13 +709,13 @@

Next the compiler, standard library, and platform configuration files are included. These are included via macros (BOOST_COMPILER_CONFIG - etc, see user settable macros), + etc, see user settable macros), and if the corresponding macro is undefined then a separate header that detects which compiler/standard library/platform is in use is included in order to set these. The config can be told to ignore these headers altogether if the corresponding BOOST_NO_XXX macro is set (for example BOOST_NO_COMPILER_CONFIG - to disable including any compiler configuration file - see + to disable including any compiler configuration file - see user settable macros).

@@ -728,7 +728,7 @@

If you are working on a unix-like platform then you can use the configure script to generate a "frozen" configuration based on your current - compiler setup - see using the configure + compiler setup - see using the configure script for more details.

- +

Last revised: June 20, 2008 at 00:19:08 GMT

Last revised: August 25, 2008 at 09:59:24 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 70e35d51..977eb681 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -192,6 +192,10 @@ Pointers to members don't work when used as template parameters. The compiler misreads 8.5.1, treating classes as non-aggregate if they contain private or protected member functions. ]] +[[`BOOST_NO_RTTI`][Compiler][ +The compiler may (or may not) have the typeid operator, but RTTI on the dynamic type +of an object is not supported. +]] [[`BOOST_NO_SFINAE`][Compiler][ The compiler does not support the "Substitution Failure Is Not An Error" meta-programming idiom. diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 79173580..187591be 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -123,6 +123,9 @@ #ifndef _MSC_EXTENSIONS # define BOOST_DISABLE_WIN32 #endif +#ifndef _CPPRTTI +# define BOOST_NO_RTTI +#endif // // all versions support __declspec: diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 2aea1e01..d04849d0 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 Sat Jul 12 12:39:35 2008 +# This file was automatically generated on Mon Aug 25 10:51:52 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -292,6 +292,9 @@ test-suite "BOOST_NO_POINTER_TO_MEMBER_CONST" : test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : [ run ../no_ret_det_pass.cpp ] [ compile-fail ../no_ret_det_fail.cpp ] ; +test-suite "BOOST_NO_RTTI" : +[ run ../no_rtti_pass.cpp ] +[ compile-fail ../no_rtti_fail.cpp ] ; test-suite "BOOST_NO_SFINAE" : [ run ../no_sfinae_pass.cpp ] [ compile-fail ../no_sfinae_fail.cpp ] ; diff --git a/test/boost_no_rtti.ipp b/test/boost_no_rtti.ipp new file mode 100644 index 00000000..69594722 --- /dev/null +++ b/test/boost_no_rtti.ipp @@ -0,0 +1,57 @@ +// (C) Copyright John Maddock 2008. +// 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_RTTI +// TITLE: RTTI unavailable +// DESCRIPTION: The compiler does not support RTTI in this mode + +#include + +class A +{ +public: + A(){} + virtual void t(); +}; + +void A::t() +{ +} + +class B : public A +{ +public: + B(){} + virtual void t(); +}; + +void B::t() +{ +} + +namespace boost_no_rtti +{ + +int check(const A& a) +{ + return typeid(a) == typeid(B) ? 0 : 1; +} + +int test() +{ + try{ + B b; + return check(b); + } + catch(...) + { + return 1; + } +} + +} + diff --git a/test/config_info.cpp b/test/config_info.cpp index e16642f9..91e5fdcf 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -987,6 +987,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_RTTI); PRINT_MACRO(BOOST_NO_SFINAE); PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); @@ -1033,6 +1034,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 606a1a64..ef6faef0 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Jul 12 12:39:34 2008 +// This file was automatically generated on Mon Aug 25 10:51:52 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -217,6 +217,11 @@ namespace boost_no_pointer_to_member_const = empty_boost; #else namespace boost_no_unreachable_return_detection = empty_boost; #endif +#ifndef BOOST_NO_RTTI +#include "boost_no_rtti.ipp" +#else +namespace boost_no_rtti = empty_boost; +#endif #ifndef BOOST_NO_SFINAE #include "boost_no_sfinae.ipp" #else @@ -1051,6 +1056,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_rtti::test()) + { + std::cerr << "Failed test for BOOST_NO_RTTI at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_sfinae::test()) { std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_rtti_fail.cpp b/test/no_rtti_fail.cpp new file mode 100644 index 00000000..f24f15d6 --- /dev/null +++ b/test/no_rtti_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Aug 25 10:51:51 2008 +// 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: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_RTTI +// This file should not compile, if it does then +// BOOST_NO_RTTI should not be defined. +// See file boost_no_rtti.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_RTTI +#include "boost_no_rtti.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_rtti::test(); +} + diff --git a/test/no_rtti_pass.cpp b/test/no_rtti_pass.cpp new file mode 100644 index 00000000..9809213f --- /dev/null +++ b/test/no_rtti_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Mon Aug 25 10:51:51 2008 +// 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: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_RTTI +// This file should compile, if it does not then +// BOOST_NO_RTTI should be defined. +// See file boost_no_rtti.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_RTTI +#include "boost_no_rtti.ipp" +#else +namespace boost_no_rtti = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_rtti::test(); +} + From 4783cd575fa10ed9d0187a254c99b7a68dcf23c0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 25 Aug 2008 11:29:55 +0000 Subject: [PATCH 011/435] Added gcc auto-detection of no typeid/rtti. Added normalisation code for no rtti. [SVN r48373] --- include/boost/config/compiler/gcc.hpp | 9 +++++++++ include/boost/config/suffix.hpp | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 17895dcb..27df829b 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -91,6 +91,15 @@ #if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) #define BOOST_HAS_NRVO #endif +// +// RTTI and typeinfo detection is possible post gcc-4.3: +// +#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403 +# ifndef __GXX_RTTI +# define BOOST_NO_TYPEID +# define BOOST_NO_RTTI +# endif +#endif // // C++0x features diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 9b1eecbe..dd7c998e 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -157,6 +157,13 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #endif +// +// Without typeid support we have no dynamic RTTI either: +// +#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI) +# define BOOST_NO_RTTI +#endif + // // If we have a standard allocator, then we have a partial one as well: // From 3b7f0787465243dfdfcd57ce7eac80e53ca7360a Mon Sep 17 00:00:00 2001 From: "K. Noel Belcourt" Date: Mon, 25 Aug 2008 16:31:24 +0000 Subject: [PATCH 012/435] Patch pgi so it is open-coded to work for any PGI compiler version 7 or greater. [SVN r48380] --- include/boost/config/compiler/pgi.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 0c17d978..41f29c75 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -16,7 +16,7 @@ // if no threading API is detected. // -#if (__PGIC__ == 7) && (__PGIC_MINOR__ <= 2) +#if (__PGIC__ >= 7) #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #define BOOST_NO_TWO_PHASE_NAME_LOOKUP From c05026a644936c012ec29cd2067933d29567f5d9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 16 Sep 2008 11:04:52 +0000 Subject: [PATCH 013/435] Added patches from issue #2327 but without the new config macros or test changes yet. [SVN r48794] --- include/boost/config/compiler/borland.hpp | 54 +++++-- include/boost/config/compiler/codegear.hpp | 134 ++++++++++++++++++ .../boost/config/select_compiler_config.hpp | 4 + 3 files changed, 182 insertions(+), 10 deletions(-) create mode 100644 include/boost/config/compiler/codegear.hpp diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index a593db76..d16c06d0 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -19,11 +19,13 @@ // last known and checked version is 0x600 (Builder X preview) // or 0x593 (CodeGear C++ Builder 2007 December 2007 update): #if (__BORLANDC__ > 0x593) && (__BORLANDC__ != 0x600) -# if defined(BOOST_ASSERT_CONFIG) +//# if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" -# else -# pragma message( "Unknown compiler version - please run the configure tests and report the results") -# endif +//# else +//# pragma message( "Unknown compiler version - please run the configure tests and report the results") +//# endif +#elif (__BORLANDC__ == 0x600) +# error "CBuilderX preview compiler is no longer supported" #endif // @@ -108,21 +110,52 @@ // Borland C++ Builder 2007 December 2007 Update and below: #if (__BORLANDC__ <= 0x593) -# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# define BOOST_NO_USING_TEMPLATE -# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS -# define BOOST_NO_TWO_PHASE_NAME_LOOKUP // Temporary workaround #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS +#endif +// Borland C++ Builder 2008 and below: +#if (__BORLANDC__ <= 0x601) +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_ILLEGAL_CV_REFERENCES +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# define BOOST_NO_USING_TEMPLATE +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +#endif + +// +// Positive Feature detection +// +// Borland C++ Builder 2008 and below: +#if (__BORLANDC__ >= 0x599) +# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax +#endif + +#if defined( BOOST_CODEGEAR_0X_SUPPORT ) +# #if __BORLANDC__ >= 0x610 +# define BOOST_HAS_ALIGNOF +# define BOOST_HAS_CHAR16_T +# define BOOST_HAS_CHAR32_T +# define BOOST_HAS_DECLTYPE +//# define BOOST_HAS_DEFAULTED_FN +//# define BOOST_HAS_DELETED_FN +# define BOOST_HAS_EXPLICIT_CONVERSION_OPS +//# define BOOST_HAS_NULLPTR +//# define BOOST_HAS_RAW_STRING +# define BOOST_HAS_REF_QUALIFIER +# define BOOST_HAS_RVALUE_REFS +//# define BOOST_HAS_SCOPED_ENUM +# define BOOST_HAS_STATIC_ASSERT +//# define BOOST_HAS_VARIADIC_TMPL +# #endif //__BORLANDC__ >= 0x610 #endif #if __BORLANDC__ >= 0x590 @@ -207,3 +240,4 @@ #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) + diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp new file mode 100644 index 00000000..655a9600 --- /dev/null +++ b/include/boost/config/compiler/codegear.hpp @@ -0,0 +1,134 @@ +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright David Abrahams 2002 - 2003. +// (C) Copyright Aleksey Gurtovoy 2002. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// CodeGear C++ compiler setup: + +#if !defined( BOOST_WITH_CODEGEAR_WARNINGS ) +// these warnings occur frequently in optimized template code +# pragma warn -8004 // var assigned value, but never used +# pragma warn -8008 // condition always true/false +# pragma warn -8066 // dead code can never execute +# pragma warn -8104 // static members with ctors not threadsafe +# pragma warn -8105 // reference member in class without ctors +#endif +// +// versions check: +// last known and checked version is 0x610 +#if (__CODEGEARC__ > 0x610) +# if defined(BOOST_ASSERT_CONFIG) +# error "Unknown compiler version - please run the configure tests and report the results" +# else +# pragma message( "Unknown compiler version - please run the configure tests and report the results") +# endif +#endif + +// CodeGear C++ Builder 2009 +#if (__CODEGEARC__ <= 0x610) +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_PRIVATE_IN_AGGREGATE +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# define BOOST_NO_USING_TEMPLATE + // we shouldn't really need this - but too many things choke + // without it, this needs more investigation: +# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS + +// Still need tests writing +// # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type +// # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member + +# ifdef NDEBUG + // fix broken so that Boost.test works: +# include +# undef strcmp +# endif + // fix broken errno declaration: +# include +# ifndef errno +# define errno errno +# endif + +#endif + + +# define BOOST_HAS_CHAR16_T +# define BOOST_HAS_CHAR32_T +# define BOOST_HAS_LONG_LONG + +//# define BOOST_HAS_ALIGNOF +# define BOOST_HAS_DECLTYPE +# define BOOST_HAS_EXPLICIT_CONVERSION_OPS +//# define BOOST_HAS_RVALUE_REFS +# define BOOST_HAS_SCOPED_ENUM +//# define BOOST_HAS_STATIC_ASSERT +# define BOOST_HAS_STD_TYPE_TRAITS + +# define BOOST_HAS_TR1_HASH +# define BOOST_HAS_TR1_TYPE_TRAITS +# define BOOST_HAS_TR1_UNORDERED_MAP +# define BOOST_HAS_TR1_UNORDERED_SET + +# define BOOST_HAS_MACRO_USE_FACET + + + // On non-Win32 platforms let the platform config figure this out: +# ifdef _WIN32 +# define BOOST_HAS_STDINT_H +# endif + +// +// __int64: +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_MS_INT64 +#endif +// +// check for exception handling support: +// +#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) +# define BOOST_NO_EXCEPTIONS +#endif +// +// all versions have a : +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_DIRENT_H +#endif +// +// all versions support __declspec: +// +#if !defined(__STRICT_ANSI__) +# define BOOST_HAS_DECLSPEC +#endif +// +// ABI fixing headers: +// +#ifndef BOOST_ABI_PREFIX +# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp" +#endif +#ifndef BOOST_ABI_SUFFIX +# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp" +#endif +// +// Disable Win32 support in ANSI mode: +// +# pragma defineonoption BOOST_DISABLE_WIN32 -A +// +// MSVC compatibility mode does some nasty things: +// TODO: look up if this doesn't apply to the whole 12xx range +// +#if defined(_MSC_VER) && (_MSC_VER <= 1200) +# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +# define BOOST_NO_VOID_RETURNS +#endif + +#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__) + diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 8d8db903..9141cd63 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -72,6 +72,10 @@ // Greenhills C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp" +#elif defined __CODEGEARC__ +// CodeGear - must be checked for before Borland +# define BOOST_COMPILER_CONFIG "boost/config/compiler/codegear.hpp" + #elif defined __BORLANDC__ // Borland # define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp" From 5194a3bad75f277b1d6a52d5711f31707047009c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 16 Sep 2008 11:13:16 +0000 Subject: [PATCH 014/435] Fixes #2328. [SVN r48795] --- include/boost/detail/workaround.hpp | 51 +++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 4933a531..f04aae44 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -45,10 +45,10 @@ #else #define __BORLANDC___WORKAROUND_GUARD 0 #endif -#ifndef __MSC_VER -#define __MSC_VER_WORKAROUND_GUARD 1 +#ifndef _MSC_VER +#define _MSC_VER_WORKAROUND_GUARD 1 #else -#define __MSC_VER_WORKAROUND_GUARD 0 +#define _MSC_VER_WORKAROUND_GUARD 0 #endif #ifndef _MSC_FULL_VER #define _MSC_FULL_VER_WORKAROUND_GUARD 1 @@ -95,6 +95,11 @@ #else #define __MWERKS___WORKAROUND_GUARD 0 #endif +#ifndef __EDG__ +#define __EDG___WORKAROUND_GUARD 1 +#else +#define __EDG___WORKAROUND_GUARD 0 +#endif #ifndef __EDG_VERSION__ #define __EDG_VERSION___WORKAROUND_GUARD 1 #else @@ -105,6 +110,11 @@ #else #define __HP_aCC_WORKAROUND_GUARD 0 #endif +#ifndef __hpxstd98 +#define __hpxstd98_WORKAROUND_GUARD 1 +#else +#define __hpxstd98_WORKAROUND_GUARD 0 +#endif #ifndef _CRAYC #define _CRAYC_WORKAROUND_GUARD 1 #else @@ -120,12 +130,47 @@ #else #define MPW_CPLUS_WORKAROUND_GUARD 0 #endif +#ifndef __COMO__ +#define __COMO___WORKAROUND_GUARD 1 +#else +#define __COMO___WORKAROUND_GUARD 0 +#endif +#ifndef __COMO_VERSION__ +#define __COMO_VERSION___WORKAROUND_GUARD 1 +#else +#define __COMO_VERSION___WORKAROUND_GUARD 0 +#endif +#ifndef __INTEL_COMPILER +#define __INTEL_COMPILER_WORKAROUND_GUARD 1 +#else +#define __INTEL_COMPILER_WORKAROUND_GUARD 0 +#endif +#ifndef __ICL +#define __ICL_WORKAROUND_GUARD 1 +#else +#define __ICL_WORKAROUND_GUARD 0 +#endif +#ifndef _COMPILER_VERSION +#define _COMPILER_VERSION_WORKAROUND_GUARD 1 +#else +#define _COMPILER_VERSION_WORKAROUND_GUARD 0 +#endif #ifndef _RWSTD_VER #define _RWSTD_VER_WORKAROUND_GUARD 1 #else #define _RWSTD_VER_WORKAROUND_GUARD 0 #endif +#ifndef BOOST_RWSTD_VER +#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1 +#else +#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0 +#endif +#ifndef __GLIBCPP__ +#define __GLIBCPP___WORKAROUND_GUARD 1 +#else +#define __GLIBCPP___WORKAROUND_GUARD 0 +#endif #ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC #define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1 #else From 525c53434b573efded1ee48a57d3559a673723b4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 Sep 2008 12:00:14 +0000 Subject: [PATCH 015/435] Fixes #2327. Additional Codegear support macros and configuration. [SVN r48893] --- doc/macro_reference.qbk | 8 +++++++ include/boost/config/compiler/codegear.hpp | 7 +++--- include/boost/config/suffix.hpp | 6 +++++ test/all/Jamfile.v2 | 8 ++++++- test/boost_no_is_abstract.ipp | 21 ++++++++--------- test/boost_no_typename_with_ctor.ipp | 26 ++++++++++++++++++++++ test/config_info.cpp | 3 +++ test/config_test.cpp | 22 +++++++++++++++++- 8 files changed, 86 insertions(+), 15 deletions(-) create mode 100644 test/boost_no_typename_with_ctor.ipp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 977eb681..90b6659c 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -171,6 +171,10 @@ There is no specialization for `numeric_limits<__int64>` and specializations as a standard library "fix", only if the compiler supports the `__int64` datatype. ]] +[[`BOOST_NO_NESTED_FRIENDSHIP`][Compiler][ +Compiler doesn't allow a nested class to access private members of its +containing class. Probably Borland/CodeGear specific. +]] [[`BOOST_NO_OPERATORS_IN_NAMESPACE`][Compiler][ Compiler requires inherited operator friend functions to be defined at namespace scope, then using'ed to boost. Probably GCC specific. See @@ -271,6 +275,10 @@ The compiler does not support template template parameters. [[`BOOST_NO_TYPEID`][Compiler][ The compiler does not support the typeid operator at all. ]] +[[`BOOST_NO_TYPENAME_WITH_CTOR`][Compiler][ +The typename keyword cannot be used when creating a temporary of a +Dependent type. +]] [[`BOOST_NO_UNREACHABLE_RETURN_DETECTION`][Compiler][ If a return is unreachable, then no return statement should be required, however some compilers insist on it, while other issue a bunch of warnings diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 655a9600..d27817a9 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -40,10 +40,11 @@ // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type +# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member -// Still need tests writing -// # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type -// # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member +// Temporary hack, until specific MPL preprocessed headers are generated +# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS # ifdef NDEBUG // fix broken so that Boost.test works: diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index dd7c998e..f71c644f 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -442,6 +442,12 @@ namespace std { # define BOOST_DEDUCED_TYPENAME #endif +#ifndef BOOST_NO_TYPENAME_WITH_CTOR +# define BOOST_CTOR_TYPENAME typename +#else +# define BOOST_CTOR_TYPENAME +#endif + // long long workaround ------------------------------------------// // On gcc (and maybe other compilers?) long long is alway supported // but it's use may generate either warnings (with -ansi), or errors diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index d04849d0..3811fbe6 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 Aug 25 10:51:52 2008 +# This file was automatically generated on Thu Sep 18 23:32:18 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -274,6 +274,9 @@ test-suite "BOOST_NO_MEMBER_TEMPLATE_KEYWORD" : test-suite "BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS" : [ run ../no_mem_tem_pnts_pass.cpp ] [ compile-fail ../no_mem_tem_pnts_fail.cpp ] ; +test-suite "BOOST_NO_NESTED_FRIENDSHIP" : +[ run ../no_nested_friendship_pass.cpp ] +[ compile-fail ../no_nested_friendship_fail.cpp ] ; test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" : [ run ../no_ops_in_namespace_pass.cpp ] [ compile-fail ../no_ops_in_namespace_fail.cpp ] ; @@ -355,6 +358,9 @@ test-suite "BOOST_NO_TWO_PHASE_NAME_LOOKUP" : test-suite "BOOST_NO_TYPEID" : [ run ../no_typeid_pass.cpp ] [ compile-fail ../no_typeid_fail.cpp ] ; +test-suite "BOOST_NO_TYPENAME_WITH_CTOR" : +[ run ../no_typename_with_ctor_pass.cpp ] +[ compile-fail ../no_typename_with_ctor_fail.cpp ] ; test-suite "BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL" : [ run ../no_using_breaks_adl_pass.cpp ] [ compile-fail ../no_using_breaks_adl_fail.cpp ] ; diff --git a/test/boost_no_is_abstract.ipp b/test/boost_no_is_abstract.ipp index a1fba856..d44695c8 100644 --- a/test/boost_no_is_abstract.ipp +++ b/test/boost_no_is_abstract.ipp @@ -12,11 +12,18 @@ namespace boost_no_is_abstract{ +#if defined(__CODEGEARC__) template struct is_abstract_test { - // Deduction fails if T is void, function type, - // reference type (14.8.2/2)or an abstract class type + enum{ value = __is_abstract(T) }; +}; +#else +template +struct is_abstract_test +{ + // Deduction fails if T is void, function type, + // reference type (14.8.2/2)or an abstract class type // according to review status issue #337 // template @@ -29,9 +36,10 @@ struct is_abstract_test #else enum{ s1 = sizeof(check_sig(0)) }; #endif - + enum{ value = (s1 == sizeof(char)) }; }; +#endif struct non_abstract{}; struct abstract{ virtual void foo() = 0; }; @@ -43,10 +51,3 @@ int test() } - - - - - - - diff --git a/test/boost_no_typename_with_ctor.ipp b/test/boost_no_typename_with_ctor.ipp new file mode 100644 index 00000000..f3e8679f --- /dev/null +++ b/test/boost_no_typename_with_ctor.ipp @@ -0,0 +1,26 @@ +// MACRO: BOOST_NO_TYPENAME_WITH_CTOR +// TITLE: Use of typename keyword with constructors +// DESCRIPTION: If the compiler rejects the typename keyword when calling +// the constructor of a dependent type + +namespace boost_no_typename_with_ctor { + +struct A {}; + +template +struct B { + typedef T type; +}; + +template +typename T::type f() { + return typename T::type(); +} + +int test() { + A a = f >(); + return 0; +} + +} + diff --git a/test/config_info.cpp b/test/config_info.cpp index 91e5fdcf..3cc329b0 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -982,6 +982,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS); PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); + PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP); PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); @@ -1010,6 +1011,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES); PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP); PRINT_MACRO(BOOST_NO_TYPEID); + PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR); PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION); PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE); PRINT_MACRO(BOOST_NO_USING_TEMPLATE); @@ -1035,6 +1037,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index ef6faef0..6fbedf8c 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Aug 25 10:51:52 2008 +// This file was automatically generated on Thu Sep 18 23:32:18 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -187,6 +187,11 @@ namespace boost_no_member_template_keyword = empty_boost; #else namespace boost_no_pointer_to_member_template_parameters = empty_boost; #endif +#ifndef BOOST_NO_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +namespace boost_no_nested_friendship = empty_boost; +#endif #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE #include "boost_no_ops_in_namespace.ipp" #else @@ -322,6 +327,11 @@ namespace boost_no_two_phase_name_lookup = empty_boost; #else namespace boost_no_typeid = empty_boost; #endif +#ifndef BOOST_NO_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +namespace boost_no_typename_with_ctor = empty_boost; +#endif #ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #include "boost_no_using_breaks_adl.ipp" #else @@ -1026,6 +1036,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_nested_friendship::test()) + { + std::cerr << "Failed test for BOOST_NO_NESTED_FRIENDSHIP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_operators_in_namespace::test()) { std::cerr << "Failed test for BOOST_NO_OPERATORS_IN_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1161,6 +1176,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_TYPEID at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_typename_with_ctor::test()) + { + std::cerr << "Failed test for BOOST_NO_TYPENAME_WITH_CTOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_function_scope_using_declaration_breaks_adl::test()) { std::cerr << "Failed test for BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL at: " << __FILE__ << ":" << __LINE__ << std::endl; From 3a810dea60b9fb4471be7275122b69eb1f76998e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 19 Sep 2008 12:01:54 +0000 Subject: [PATCH 016/435] Regenerate docs. [SVN r48894] --- .../boost_config/boost_macro_reference.html | 36 +++++++++++++++++++ doc/html/index.html | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index a76b9e0e..eed14728 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -650,6 +650,24 @@ + +

+ BOOST_NO_NESTED_FRIENDSHIP +

+ + +

+ Compiler +

+ + +

+ Compiler doesn't allow a nested class to access private members of + its containing class. Probably Borland/CodeGear specific. +

+ + +

BOOST_NO_OPERATORS_IN_NAMESPACE @@ -1134,6 +1152,24 @@ + +

+ BOOST_NO_TYPENAME_WITH_CTOR +

+ + +

+ Compiler +

+ + +

+ The typename keyword cannot be used when creating a temporary of + a Dependent type. +

+ + +

BOOST_NO_UNREACHABLE_RETURN_DETECTION diff --git a/doc/html/index.html b/doc/html/index.html index f11a3c2e..d432aeed 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -962,7 +962,7 @@

- +

Last revised: August 25, 2008 at 09:59:24 GMT

Last revised: September 19, 2008 at 12:01:08 GMT


From 72b387e5c49777d142e5b5de94f09393b60d6789 Mon Sep 17 00:00:00 2001 From: "K. Noel Belcourt" Date: Fri, 19 Sep 2008 16:37:43 +0000 Subject: [PATCH 017/435] Add support for builing with intel compilers on Itanium (define BOOST_NO_TWO_PHASE_NAME_LOOKUP macro). [SVN r48897] --- include/boost/config/compiler/intel.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 3f044ebb..bc3d4e99 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -152,6 +152,11 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif +// Intel on Altix Itanium +#if defined(__itanium__) && defined(__INTEL_COMPILER) +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP +#endif + // // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1010) From ca56a76dda8adda25d3b3299f92db53fb75dc528 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 20 Sep 2008 08:58:10 +0000 Subject: [PATCH 018/435] Oops, regenerate and add missing files. [SVN r48909] --- test/all/Jamfile.v2 | 2 +- test/boost_no_nested_friendship.ipp | 21 ++++++++++++++++ test/config_info.cpp | 1 + test/config_test.cpp | 2 +- test/no_nested_friendship_fail.cpp | 37 +++++++++++++++++++++++++++++ test/no_nested_friendship_pass.cpp | 37 +++++++++++++++++++++++++++++ test/no_typename_with_ctor_fail.cpp | 37 +++++++++++++++++++++++++++++ test/no_typename_with_ctor_pass.cpp | 37 +++++++++++++++++++++++++++++ 8 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 test/boost_no_nested_friendship.ipp create mode 100644 test/no_nested_friendship_fail.cpp create mode 100644 test/no_nested_friendship_pass.cpp create mode 100644 test/no_typename_with_ctor_fail.cpp create mode 100644 test/no_typename_with_ctor_pass.cpp diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 3811fbe6..cd761fb5 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 Thu Sep 18 23:32:18 2008 +# This file was automatically generated on Sat Sep 20 09:49:52 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the diff --git a/test/boost_no_nested_friendship.ipp b/test/boost_no_nested_friendship.ipp new file mode 100644 index 00000000..eb726509 --- /dev/null +++ b/test/boost_no_nested_friendship.ipp @@ -0,0 +1,21 @@ +// MACRO: BOOST_NO_NESTED_FRIENDSHIP +// TITLE: Access to private members from nested classes +// DESCRIPTION: If the compiler fails to support access to private members +// from nested classes + +namespace boost_no_nested_friendship { + +class A { + static int b; + class B { + int f() { return b; } + }; +}; + +int test() +{ + return 0; +} + +} + diff --git a/test/config_info.cpp b/test/config_info.cpp index 3cc329b0..87b9aa9a 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1038,6 +1038,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 6fbedf8c..876cd37c 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// This file was automatically generated on Sat Sep 20 09:49:52 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the diff --git a/test/no_nested_friendship_fail.cpp b/test/no_nested_friendship_fail.cpp new file mode 100644 index 00000000..dd90e404 --- /dev/null +++ b/test/no_nested_friendship_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// 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_NESTED_FRIENDSHIP +// This file should not compile, if it does then +// BOOST_NO_NESTED_FRIENDSHIP should not be defined. +// See file boost_no_nested_friendship.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_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_nested_friendship::test(); +} + diff --git a/test/no_nested_friendship_pass.cpp b/test/no_nested_friendship_pass.cpp new file mode 100644 index 00000000..3e114bc9 --- /dev/null +++ b/test/no_nested_friendship_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// 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_NESTED_FRIENDSHIP +// This file should compile, if it does not then +// BOOST_NO_NESTED_FRIENDSHIP should be defined. +// See file boost_no_nested_friendship.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_NESTED_FRIENDSHIP +#include "boost_no_nested_friendship.ipp" +#else +namespace boost_no_nested_friendship = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_nested_friendship::test(); +} + diff --git a/test/no_typename_with_ctor_fail.cpp b/test/no_typename_with_ctor_fail.cpp new file mode 100644 index 00000000..74ee7b0e --- /dev/null +++ b/test/no_typename_with_ctor_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// 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_TYPENAME_WITH_CTOR +// This file should not compile, if it does then +// BOOST_NO_TYPENAME_WITH_CTOR should not be defined. +// See file boost_no_typename_with_ctor.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_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_typename_with_ctor::test(); +} + diff --git a/test/no_typename_with_ctor_pass.cpp b/test/no_typename_with_ctor_pass.cpp new file mode 100644 index 00000000..4a2d9bbc --- /dev/null +++ b/test/no_typename_with_ctor_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Sep 18 23:32:18 2008 +// 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_TYPENAME_WITH_CTOR +// This file should compile, if it does not then +// BOOST_NO_TYPENAME_WITH_CTOR should be defined. +// See file boost_no_typename_with_ctor.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_TYPENAME_WITH_CTOR +#include "boost_no_typename_with_ctor.ipp" +#else +namespace boost_no_typename_with_ctor = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_typename_with_ctor::test(); +} + From e6e97911b1baf2bbfbb4ed037b4e7d7dc46ebdca Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 23 Sep 2008 23:22:56 +0000 Subject: [PATCH 019/435] The test case for BOOST_NO_INITIALIZER_LISTS, I'll run generate tomorrow. [SVN r48934] --- test/boost_no_initializer_lists.ipp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/boost_no_initializer_lists.ipp diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp new file mode 100644 index 00000000..31f03bd0 --- /dev/null +++ b/test/boost_no_initializer_lists.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Daniel James 2008. +// 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_INITIALIZER_LISTS +// TITLE: Initializer Lists +// DESCRIPTION: If the compiler does not support C++0x initializer lists + +#include + +namespace boost_no_initializer_lists { + +int test() +{ + std::initializer_list x = { 1, 2 }; + return 0; +} + +} From add25bf5711fa998df34879d6bc5e1a0fe12f0b4 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 24 Sep 2008 10:29:46 +0000 Subject: [PATCH 020/435] Revert BOOST_NO_INITIALIZER_LISTS test case, I meant to add it to a branch. [SVN r48938] --- test/boost_no_initializer_lists.ipp | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 test/boost_no_initializer_lists.ipp diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp deleted file mode 100644 index 31f03bd0..00000000 --- a/test/boost_no_initializer_lists.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// (C) Copyright Daniel James 2008. -// 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_INITIALIZER_LISTS -// TITLE: Initializer Lists -// DESCRIPTION: If the compiler does not support C++0x initializer lists - -#include - -namespace boost_no_initializer_lists { - -int test() -{ - std::initializer_list x = { 1, 2 }; - return 0; -} - -} From 5e3ea46864634acccf08d6f01910c7f2166399a9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 1 Oct 2008 11:23:31 +0000 Subject: [PATCH 021/435] Change msvc ABI to match the default on Win64. [SVN r49078] --- include/boost/config/abi/msvc_prefix.hpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/boost/config/abi/msvc_prefix.hpp b/include/boost/config/abi/msvc_prefix.hpp index 3d3905c2..97f06cdc 100644 --- a/include/boost/config/abi/msvc_prefix.hpp +++ b/include/boost/config/abi/msvc_prefix.hpp @@ -3,6 +3,20 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#pragma pack(push,8) +// +// Boost binaries are built with the compiler's default ABI settings, +// if the user changes their default alignment in the VS IDE then their +// code will no longer be binary compatible with the bjam built binaries +// unless this header is included to force Boost code into a consistent ABI. +// +// Note that inclusion of this header is only necessary for libraries with +// separate source, header only libraries DO NOT need this as long as all +// translation units are built with the same options. +// +#if defined(_M_X64) +# pragma pack(push,16) +#else +# pragma pack(push,8) +#endif From 4cb054bf646d0d6fdae6041a9f20823931d9c551 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 7 Oct 2008 17:13:33 +0000 Subject: [PATCH 022/435] Enable long long support. [SVN r49168] --- include/boost/config/compiler/sunpro_cc.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index eed57da8..f513c2dc 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -75,6 +75,10 @@ #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_ADL_BARRIER +#if(__SUNPRO_CC >= 0x590) +# define BOOST_HAS_LONG_LONG +#endif + #define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC) From f4ff5f88063d4f90fce9746b3bbc4db87733bd31 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 11 Oct 2008 15:40:44 +0000 Subject: [PATCH 023/435] Fix Inspection report issues. [SVN r49281] --- test/boost_no_nested_friendship.ipp | 7 +++++++ test/boost_no_typename_with_ctor.ipp | 7 +++++++ tools/generate.cpp | 6 +++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/test/boost_no_nested_friendship.ipp b/test/boost_no_nested_friendship.ipp index eb726509..f6df83b2 100644 --- a/test/boost_no_nested_friendship.ipp +++ b/test/boost_no_nested_friendship.ipp @@ -1,3 +1,10 @@ +// Copyright (C) 2008 N. Musatti +// 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_NESTED_FRIENDSHIP // TITLE: Access to private members from nested classes // DESCRIPTION: If the compiler fails to support access to private members diff --git a/test/boost_no_typename_with_ctor.ipp b/test/boost_no_typename_with_ctor.ipp index f3e8679f..68a5a0ec 100644 --- a/test/boost_no_typename_with_ctor.ipp +++ b/test/boost_no_typename_with_ctor.ipp @@ -1,3 +1,10 @@ +// Copyright (C) 2008 N. Musatti +// 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_TYPENAME_WITH_CTOR // TITLE: Use of typename keyword with constructors // DESCRIPTION: If the compiler rejects the typename keyword when calling diff --git a/tools/generate.cpp b/tools/generate.cpp index 6af78fdb..87adc55c 100644 --- a/tools/generate.cpp +++ b/tools/generate.cpp @@ -156,12 +156,12 @@ void write_test_file(const fs::path& file, "# undef BOOST_ASSERT_CONFIG\n" "#endif\n\n"; - static const boost::regex tr1_exp("BOOST_HAS_TR1.*"); + static const boost::regex tr1_exp("BOOST_HAS_TR1.*"); ofs << "#include \n"; - if(regex_match(macro_name, tr1_exp)) - ofs << "#include \n"; + if(regex_match(macro_name, tr1_exp)) + ofs << "#include \n"; ofs << "#include \"test.hpp\"\n\n" "#if"; From ac26a726e75610f0b6c259b8e9cc3a4e0458c59d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 27 Oct 2008 16:17:02 +0000 Subject: [PATCH 024/435] Fix PDF build issue, and regenerated docs. [SVN r49461] --- doc/acknowledgements.qbk | 2 +- doc/html/boost_config/acknowledgements.html | 2 +- doc/html/index.html | 6 ++---- doc/rationale.qbk | 2 -- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk index adbbb906..5c1a25bd 100644 --- a/doc/acknowledgements.qbk +++ b/doc/acknowledgements.qbk @@ -15,7 +15,7 @@ Beman Dawes provided the original `config.hpp` and part of this document. Vesa Karvonen provided a description of the principles (see -[link config_rationale rationale]) and put together an early version of +[link boost_config.rationale rationale]) and put together an early version of the current configuration setup. John Maddock put together the configuration current code, the test diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 901f8a5e..b2104e94 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -30,7 +30,7 @@ part of this document.

- Vesa Karvonen provided a description of the principles (see rationale) + Vesa Karvonen provided a description of the principles (see rationale) and put together an early version of the current configuration setup.

diff --git a/doc/html/index.html b/doc/html/index.html index d432aeed..71219b45 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -958,11 +958,9 @@

-

-

- +

Last revised: September 19, 2008 at 12:01:08 GMT

Last revised: October 27, 2008 at 16:15:55 GMT


diff --git a/doc/rationale.qbk b/doc/rationale.qbk index 7ca27a47..c5c78fe7 100644 --- a/doc/rationale.qbk +++ b/doc/rationale.qbk @@ -10,8 +10,6 @@ http://www.boost.org/LICENSE_1_0.txt) ] -[#config_rationale] - [section Rationale] The problem with many traditional "textbook" implementations of configuration From 0f0eef5efa2556874ddd1dc5ed7e2236a6ebc6df Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 29 Oct 2008 17:11:50 +0000 Subject: [PATCH 025/435] Fixes #2445. Update to recognise VC10. [SVN r49488] --- include/boost/config/auto_link.hpp | 7 ++++++- include/boost/config/compiler/visualc.hpp | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index df58d4f9..f2eb583f 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -135,11 +135,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc80: # define BOOST_LIB_TOOLSET "vc80" -#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1500) +#elif defined(BOOST_MSVC) && (BOOST_MSVC == 1500) // vc90: # define BOOST_LIB_TOOLSET "vc90" +#elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1600) + + // vc10: +# define BOOST_LIB_TOOLSET "vc100" + #elif defined(__BORLANDC__) // CBuilder 6: diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 187591be..d5793e85 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -79,7 +79,7 @@ # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS #endif -#if _MSC_VER <= 1500 // 1500 == VC++ 9.0 +#if _MSC_VER <= 1600 // 1600 == VC++ 10.0 # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -175,6 +175,8 @@ # define BOOST_COMPILER_VERSION 8.0 # elif _MSC_VER == 1500 # define BOOST_COMPILER_VERSION 9.0 +# elif _MSC_VER == 1600 +# define BOOST_COMPILER_VERSION 10.0 # else # define BOOST_COMPILER_VERSION _MSC_VER # endif @@ -190,7 +192,7 @@ #endif // // last known and checked version is 1500 (VC9): -#if (_MSC_VER > 1500) +#if (_MSC_VER > 1600) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From fd3f4544ce4c9cad7047d64926443f7a032cc130 Mon Sep 17 00:00:00 2001 From: "Michael A. Jackson" Date: Sat, 1 Nov 2008 13:15:41 +0000 Subject: [PATCH 026/435] Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor [SVN r49510] --- CMakeLists.txt | 22 ++++++++++++++++++++++ module.cmake | 0 test/CMakeLists.txt | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 module.cmake create mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..82b6fc02 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,22 @@ +#---------------------------------------------------------------------------- +# This file was automatically generated from the original CMakeLists.txt file +# Add a variable to hold the headers for the library +set (lib_headers + config.hpp + config +) + +# Add a library target to the build system +boost_library_project( + config + # SRCDIRS + TESTDIRS test + HEADERS ${lib_headers} + # DOCDIRS + DESCRIPTION "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users." + MODULARIZED + AUTHORS "John Maddock " + # MAINTAINERS +) + + diff --git a/module.cmake b/module.cmake new file mode 100644 index 00000000..e69de29b diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..d5285132 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,39 @@ +# Copyright John Maddock and Douglas Gregor. +# 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) +if(MSVC) + set(BOOST_CONFIG_MSVC_STATIC_OPTIONS STATIC STATIC_RUNTIME) +endif(MSVC) +if(BORLAND) + set(BOOST_CONFIG_BORLAND_STATIC_OPTIONS STATIC STATIC_RUNTIME) +endif(BORLAND) + +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(BOOST_CONFIG_STATIC_THREAD_LIBS LINK_LIBS pthread rt) +endif(CMAKE_SYSTEM_NAME MATCHES "Linux") + +#------------------------------------------------------------------------- +#-- Needed include directories for the tests +boost_test_add_dependent_includes("utility;detail;config;test;preprocessor;type_traits;smart_ptr;mpl;exception;static_assert") +#------------------------------------------------------------------------- + +boost_test_run(config_test_threaded config_test.cpp + EXTRA_OPTIONS MULTI_THREADED) +boost_test_run(config_test + EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS} + ${BOOST_CONFIG_STATIC_THREAD_LIBS}) +boost_test_run(config_info_threaded config_info.cpp + EXTRA_OPTIONS MULTI_THREADED) +boost_test_run(config_info + EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS}) +boost_test_run(math_info + EXTRA_OPTIONS ${BOOST_CONFIG_BORLAND_STATIC_OPTIONS}) + + +boost_test_run(limits_test DEPENDS boost_test_exec_monitor) +boost_test_run(abi_test abi/abi_test.cpp abi/main.cpp) + +# TODO: config_link_test +boost_test_compile_fail(test_thread_fail1 threads/test_thread_fail1.cpp) +boost_test_compile_fail(test_thread_fail2 threads/test_thread_fail2.cpp) \ No newline at end of file From 53c6fb4a1f4c9120a418861937b057a3261d2bd5 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 3 Nov 2008 15:18:21 +0000 Subject: [PATCH 027/435] Prep for 1.38.0 [SVN r49556] --- 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 a07d638d..990962fa 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 103700 +#define BOOST_VERSION 103800 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_37" +#define BOOST_LIB_VERSION "1_38" #endif From e4d4157b5aab60bdd13bc88554259f9145af1209 Mon Sep 17 00:00:00 2001 From: "K. Noel Belcourt" Date: Mon, 3 Nov 2008 18:37:49 +0000 Subject: [PATCH 028/435] Both Sun and Pgi on Linux correctly put typeinfo into the std namespace, but function_base keys off the BOOST_NO_EXCEPTION_STD_NAMESPACE macro instead of the BOOST_NO_STD_TYPEINFO macro. The attached patch changes function_base to use the typeinfo macro. Because eVC 4.2 doesn't put typeinfo into the std namespace, I need to define BOOST_NO_STD_TYPEINFO only for this eVC version. [SVN r49571] --- include/boost/config/compiler/visualc.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index d5793e85..e88aee9a 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -22,6 +22,11 @@ # define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS # define BOOST_NO_VOID_RETURNS # define BOOST_NO_EXCEPTION_STD_NAMESPACE + +# if BOOST_MSVC == 1202 +# define BOOST_NO_STD_TYPEINFO +# endif + // disable min/max macro defines on vc6: // #endif From 99052817e287980577bc2ed9de69ea24bd8976f6 Mon Sep 17 00:00:00 2001 From: "Michael A. Jackson" Date: Fri, 7 Nov 2008 17:02:56 +0000 Subject: [PATCH 029/435] Updating CMake files to latest trunk. Added dependency information for regression tests and a few new macros for internal use. [SVN r49627] --- test/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d5285132..1e319930 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -13,13 +13,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux") set(BOOST_CONFIG_STATIC_THREAD_LIBS LINK_LIBS pthread rt) endif(CMAKE_SYSTEM_NAME MATCHES "Linux") -#------------------------------------------------------------------------- -#-- Needed include directories for the tests -boost_test_add_dependent_includes("utility;detail;config;test;preprocessor;type_traits;smart_ptr;mpl;exception;static_assert") -#------------------------------------------------------------------------- +boost_additional_test_dependencies(config BOOST_DEPENDS test) boost_test_run(config_test_threaded config_test.cpp EXTRA_OPTIONS MULTI_THREADED) + boost_test_run(config_test EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS} ${BOOST_CONFIG_STATIC_THREAD_LIBS}) From 31395bd98fc2974c2a53d06401d92fa0258bf1de Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 Nov 2008 08:51:43 +0000 Subject: [PATCH 030/435] Added __CODEGEARC__ warning suppression. [SVN r49822] --- include/boost/detail/workaround.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index f04aae44..c7121880 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -45,6 +45,11 @@ #else #define __BORLANDC___WORKAROUND_GUARD 0 #endif +#ifndef __CODEGEARC__ +#define __CODEGEARC___WORKAROUND_GUARD 1 +#else +#define __CODEGEARC___WORKAROUND_GUARD 0 +#endif #ifndef _MSC_VER #define _MSC_VER_WORKAROUND_GUARD 1 #else From f6afca0da2fd7de1c75507df92f16afbe4fbe4a9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 20 Nov 2008 16:55:12 +0000 Subject: [PATCH 031/435] Fix typos in docs and regenerate. [SVN r49850] --- doc/html/boost_config/acknowledgements.html | 8 +-- .../boost_config/boost_macro_reference.html | 56 +++++++++---------- .../guidelines_for_boost_authors.html | 14 ++--- doc/html/boost_config/rationale.html | 10 ++-- doc/html/index.html | 40 ++++++------- doc/macro_reference.qbk | 5 +- 6 files changed, 67 insertions(+), 66 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index b2104e94..a1c5517b 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,8 +3,8 @@ Acknowledgements - - + + @@ -23,14 +23,14 @@

Beman Dawes provided the original config.hpp and part of this document.

- Vesa Karvonen provided a description of the principles (see rationale) + Vesa Karvonen provided a description of the principles (see rationale) and put together an early version of the current configuration setup.

diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index eed14728..4fef764e 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,8 +3,8 @@ Boost Macro Reference - - + + @@ -24,7 +24,7 @@

Macros @@ -46,7 +46,7 @@

@@ -1258,7 +1258,7 @@

@@ -2218,7 +2218,6 @@ - @@ -2231,7 +2230,6 @@ Description

-  @@ -2245,7 +2243,6 @@ The compiler does not support type char16_t.

-  @@ -2258,7 +2255,6 @@ The compiler does not support type char32_t.

-  @@ -2271,7 +2267,6 @@ The compiler does not support constexpr.

-  @@ -2284,7 +2279,6 @@ The compiler does not support decltype.

-  @@ -2295,7 +2289,14 @@

The compiler does not support defaulted (= - default) functions. [[BOOST_NO_DELETED_FUNCTIONS + default) functions. +

+ + + + +

+ BOOST_NO_DELETED_FUNCTIONS

@@ -2317,7 +2318,6 @@ T()).

-  @@ -2331,7 +2331,6 @@ for templates (explicit template).

-  @@ -2345,7 +2344,6 @@ long.

-  @@ -2358,7 +2356,6 @@ The compiler does not support raw string literals.

-  @@ -2371,7 +2368,6 @@ The compiler does not support r-value references.

-  @@ -2384,7 +2380,6 @@ The compiler does not support scoped enumerations (enum class).

-  @@ -2397,7 +2392,6 @@ The compiler does not support static_assert.

-  @@ -2408,8 +2402,14 @@

The compiler does not support Unicode (u8, - u, U#) literals. - ]] [[BOOST_NO_VARIADIC_TEMPLATES` + u, U) literals. +

+ + + + +

+ BOOST_NO_VARIADIC_TEMPLATES

@@ -2425,7 +2425,7 @@

@@ -2718,7 +2718,7 @@

@@ -2957,7 +2957,7 @@

@@ -2974,7 +2974,7 @@

@@ -3032,7 +3032,7 @@

diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index b2297d96..17a76c72 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,8 +3,8 @@ Guidelines for Boost Authors - - + + @@ -24,7 +24,7 @@

@@ -105,7 +105,7 @@

@@ -184,7 +184,7 @@

@@ -283,7 +283,7 @@

diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 499cac66..fe45071e 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,8 +3,8 @@ Rationale - - + + @@ -24,7 +24,7 @@

The problem
@@ -41,7 +41,7 @@

Consider a situation in which you are concurrently developing on multiple @@ -104,7 +104,7 @@

The approach taken by boost's configuration headers is to separate configuration diff --git a/doc/html/index.html b/doc/html/index.html index 71219b45..7dac8d1b 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,8 +3,8 @@ Boost.Config - - + + @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -94,7 +94,7 @@
@@ -113,7 +113,7 @@

@@ -152,10 +152,10 @@ them usable by both Boost library and user code.

- Boost informational or helper + Boost informational or helper macros are designed for use by Boost users as well as for our own internal - use. Note however, that the feature test - and defect test macros were designed + use. Note however, that the feature test + and defect test macros were designed for internal use by Boost libraries, not user code, so they can change at any time (though no gratuitous changes are made to them). Boost library problems resulting from changes to the configuration macros are caught by the Boost @@ -170,7 +170,7 @@

@@ -320,7 +320,7 @@

@@ -684,7 +684,7 @@

@@ -709,13 +709,13 @@

Next the compiler, standard library, and platform configuration files are included. These are included via macros (BOOST_COMPILER_CONFIG - etc, see user settable macros), + etc, see user settable macros), and if the corresponding macro is undefined then a separate header that detects which compiler/standard library/platform is in use is included in order to set these. The config can be told to ignore these headers altogether if the corresponding BOOST_NO_XXX macro is set (for example BOOST_NO_COMPILER_CONFIG - to disable including any compiler configuration file - see + to disable including any compiler configuration file - see user settable macros).

@@ -728,7 +728,7 @@

If you are working on a unix-like platform then you can use the configure script to generate a "frozen" configuration based on your current - compiler setup - see using the configure + compiler setup - see using the configure script for more details.

- +

Last revised: October 27, 2008 at 16:15:55 GMT

Last revised: November 20, 2008 at 16:52:46 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 90b6659c..a66b9b15 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -537,7 +537,8 @@ type `char32_t`. `decltype`. ]] [[`BOOST_NO_DEFAULTED_FUNCTIONS`][The compiler does not support -defaulted (`= default`) functions. +defaulted (`= default`) functions. +]] [[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support deleted (`= delete`) functions. ]] @@ -562,7 +563,7 @@ scoped enumerations (`enum class`). `static_assert`. ]] [[`BOOST_NO_UNICODE_LITERALS`][The compiler does not support -Unicode (`u8`, `u`, `U') literals. +Unicode (`u8`, `u`, `U`) literals. ]] [[`BOOST_NO_VARIADIC_TEMPLATES`][The compiler does not support variadic templates. From cb59854bd73ac4076ed70e32a34809b2b3f44252 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 2 Dec 2008 10:06:10 +0000 Subject: [PATCH 032/435] Suppressed a couple more -Wundef warnings. [SVN r50062] --- include/boost/detail/workaround.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index c7121880..b6b64125 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -191,6 +191,16 @@ #else #define _STLPORT_VERSION_WORKAROUND_GUARD 0 #endif +#ifndef __LIBCOMO_VERSION__ +#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1 +#else +#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0 +#endif +#ifndef _CPPLIB_VER +#define _CPPLIB_VER_WORKAROUND_GUARD 1 +#else +#define _CPPLIB_VER_WORKAROUND_GUARD 0 +#endif #ifndef BOOST_INTEL_CXX_VERSION #define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1 From ad90956a3aac1e08d947ee1084c1eae1c07373e5 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 4 Dec 2008 21:30:19 +0000 Subject: [PATCH 033/435] Add support for initializer lists to config and the unordered containers. [SVN r50118] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 16 +++++++- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 8 ++-- doc/macro_reference.qbk | 3 ++ include/boost/config/compiler/borland.hpp | 2 + include/boost/config/compiler/common_edg.hpp | 5 +++ include/boost/config/compiler/digitalmars.hpp | 1 + include/boost/config/compiler/gcc.hpp | 4 ++ include/boost/config/compiler/metrowerks.hpp | 1 + include/boost/config/compiler/mpw.hpp | 2 + include/boost/config/compiler/pgi.hpp | 1 + include/boost/config/compiler/sgi_mipspro.hpp | 2 + include/boost/config/compiler/sunpro_cc.hpp | 1 + include/boost/config/compiler/vacpp.hpp | 1 + include/boost/config/compiler/visualc.hpp | 4 ++ test/all/Jamfile.v2 | 5 ++- test/boost_no_initializer_lists.ipp | 23 ++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++++- test/no_initializer_lists_fail.cpp | 37 +++++++++++++++++++ test/no_initializer_lists_pass.cpp | 37 +++++++++++++++++++ 23 files changed, 165 insertions(+), 14 deletions(-) create mode 100644 test/boost_no_initializer_lists.ipp create mode 100644 test/no_initializer_lists_fail.cpp create mode 100644 test/no_initializer_lists_pass.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index a1c5517b..b02bda6a 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,8 +3,8 @@ Acknowledgements - - + + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 4fef764e..ac30fa13 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,8 +3,8 @@ Boost Macro Reference - - + + @@ -2333,6 +2333,18 @@ + +

+ BOOST_NO_INITIALIZER_LISTS +

+ + +

+ The C++ compiler does not support C++0x initializer lists. +

+ + +

BOOST_NO_LONG_LONG diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 17a76c72..2e16141f 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,8 +3,8 @@ Guidelines for Boost Authors - - + + diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index fe45071e..cdd610f0 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,8 +3,8 @@ Rationale - - + + diff --git a/doc/html/index.html b/doc/html/index.html index 7dac8d1b..2d82a1c3 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,8 +3,8 @@ Boost.Config - - + + @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: November 20, 2008 at 16:52:46 GMT

Last revised: December 04, 2008 at 21:06:12 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index a66b9b15..29c4703b 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -548,6 +548,9 @@ explicit conversion operators (`explicit operator T()`). [[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support explicit instantiation declarations for templates (`explicit template`). ]] +[[`BOOST_NO_INITIALIZER_LISTS`][ +The C++ compiler does not support C++0x initializer lists. +]] [[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`. ]] [[`BOOST_NO_RAW_LITERALS`][The compiler does not support diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index d16c06d0..4d2afb46 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -158,6 +158,8 @@ # #endif //__BORLANDC__ >= 0x610 #endif +#define BOOST_NO_INITIALIZER_LISTS + #if __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 0443be1a..cba8b2ae 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -43,6 +43,11 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #endif +#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) +// No support for initializer lists +# define BOOST_NO_INITIALIZER_LISTS +#endif + // See also kai.hpp which checks a Kai-specific symbol for EH # if !defined(__KCC) && !defined(__EXCEPTIONS) # define BOOST_NO_EXCEPTIONS diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 46848479..a87af904 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -26,6 +26,7 @@ #define BOOST_NO_SFINAE #define BOOST_NO_USING_TEMPLATE #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +#define BOOST_NO_INITIALIZER_LISTS #endif // diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 27df829b..639d9700 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -116,6 +116,10 @@ # endif #endif +#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +# define BOOST_NO_INITIALIZER_LISTS +#endif + // // Potential C++0x features // diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 2b60b56f..cbb588fe 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -42,6 +42,7 @@ # if(__MWERKS__ <= 0x3206) || !defined(BOOST_STRICT_CONFIG) // 9.5 # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_INITIALIZER_LISTS # endif #if !__option(wchar_type) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 8ab2aacb..cfe9461e 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -32,6 +32,8 @@ # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS # define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */ + +# define BOOST_NO_INITIALIZER_LISTS #endif // diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 41f29c75..2cb89b89 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -21,6 +21,7 @@ #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_SWPRINTF +#define BOOST_NO_INITIALIZER_LISTS #else diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp index 33e97e9a..8e578d71 100644 --- a/include/boost/config/compiler/sgi_mipspro.hpp +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -21,6 +21,8 @@ #undef BOOST_NO_SWPRINTF #undef BOOST_DEDUCED_TYPENAME + +#define BOOST_NO_INITIALIZER_LISTS // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index f513c2dc..bee32277 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -74,6 +74,7 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_ADL_BARRIER +#define BOOST_NO_INITIALIZER_LISTS #if(__SUNPRO_CC >= 0x590) # define BOOST_HAS_LONG_LONG diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 826939f1..ece883f6 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -27,6 +27,7 @@ #if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG) # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +# define BOOST_NO_INITIALIZER_LISTS #endif // diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index e88aee9a..d6a474a9 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -93,6 +93,10 @@ # define BOOST_NO_ADL_BARRIER #endif +#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0 +# define BOOST_NO_INITIALIZER_LISTS +#endif + #ifndef _NATIVE_WCHAR_T_DEFINED # define BOOST_NO_INTRINSIC_WCHAR_T #endif diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index cd761fb5..59bb7e3e 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 Sat Sep 20 09:49:52 2008 +# This file was automatically generated on Wed Sep 24 11:44:22 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -232,6 +232,9 @@ test-suite "BOOST_NO_FUNCTION_TEMPLATE_ORDERING" : test-suite "BOOST_NO_MS_INT64_NUMERIC_LIMITS" : [ run ../no_i64_limits_pass.cpp ] [ compile-fail ../no_i64_limits_fail.cpp ] ; +test-suite "BOOST_NO_INITIALIZER_LISTS" : +[ run ../no_initializer_lists_pass.cpp ] +[ compile-fail ../no_initializer_lists_fail.cpp ] ; test-suite "BOOST_NO_INCLASS_MEMBER_INITIALIZATION" : [ run ../no_inline_memb_init_pass.cpp ] [ compile-fail ../no_inline_memb_init_fail.cpp ] ; diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp new file mode 100644 index 00000000..31f03bd0 --- /dev/null +++ b/test/boost_no_initializer_lists.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Daniel James 2008. +// 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_INITIALIZER_LISTS +// TITLE: Initializer Lists +// DESCRIPTION: If the compiler does not support C++0x initializer lists + +#include + +namespace boost_no_initializer_lists { + +int test() +{ + std::initializer_list x = { 1, 2 }; + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 87b9aa9a..cb8cb146 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -969,6 +969,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); + PRINT_MACRO(BOOST_NO_INITIALIZER_LISTS); PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T); PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T); PRINT_MACRO(BOOST_NO_IOSFWD); @@ -1039,6 +1040,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 876cd37c..068f7525 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Sep 20 09:49:52 2008 +// This file was automatically generated on Wed Sep 24 11:44:22 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -117,6 +117,11 @@ namespace boost_no_function_template_ordering = empty_boost; #else namespace boost_no_ms_int64_numeric_limits = empty_boost; #endif +#ifndef BOOST_NO_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +namespace boost_no_initializer_lists = empty_boost; +#endif #ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION #include "boost_no_inline_memb_init.ipp" #else @@ -966,6 +971,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_MS_INT64_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_initializer_lists::test()) + { + std::cerr << "Failed test for BOOST_NO_INITIALIZER_LISTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_inclass_member_initialization::test()) { std::cerr << "Failed test for BOOST_NO_INCLASS_MEMBER_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_initializer_lists_fail.cpp b/test/no_initializer_lists_fail.cpp new file mode 100644 index 00000000..1cc02556 --- /dev/null +++ b/test/no_initializer_lists_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Sep 24 11:44:21 2008 +// 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_INITIALIZER_LISTS +// This file should not compile, if it does then +// BOOST_NO_INITIALIZER_LISTS should not be defined. +// See file boost_no_initializer_lists.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_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_initializer_lists::test(); +} + diff --git a/test/no_initializer_lists_pass.cpp b/test/no_initializer_lists_pass.cpp new file mode 100644 index 00000000..74e3b5ad --- /dev/null +++ b/test/no_initializer_lists_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Wed Sep 24 11:44:21 2008 +// 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_INITIALIZER_LISTS +// This file should compile, if it does not then +// BOOST_NO_INITIALIZER_LISTS should be defined. +// See file boost_no_initializer_lists.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_INITIALIZER_LISTS +#include "boost_no_initializer_lists.ipp" +#else +namespace boost_no_initializer_lists = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_initializer_lists::test(); +} + From d0b83d60af3b873ac99ba9b62a5df551215c6a02 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 6 Dec 2008 13:48:38 +0000 Subject: [PATCH 034/435] Define BOOST_NO_INITIALIZER_LISTS for codegear. [SVN r50157] --- include/boost/config/compiler/codegear.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index d27817a9..ae57d76a 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -79,6 +79,7 @@ # define BOOST_HAS_MACRO_USE_FACET +# define BOOST_NO_INITIALIZER_LISTS // On non-Win32 platforms let the platform config figure this out: # ifdef _WIN32 From 167b63bd33ec279a8fa7795025f5eeeadef564d9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 22 Dec 2008 09:45:31 +0000 Subject: [PATCH 035/435] Added BOOST_NO_STD_UNORDERED config macro. [SVN r50362] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 16 +++++++- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 8 ++-- doc/macro_reference.qbk | 3 ++ include/boost/config/stdlib/dinkumware.hpp | 5 +++ include/boost/config/stdlib/libcomo.hpp | 4 ++ include/boost/config/stdlib/libstdcpp3.hpp | 5 +++ include/boost/config/stdlib/modena.hpp | 4 ++ include/boost/config/stdlib/msl.hpp | 4 ++ include/boost/config/stdlib/roguewave.hpp | 6 +++ include/boost/config/stdlib/sgi.hpp | 1 + include/boost/config/stdlib/stlport.hpp | 3 ++ include/boost/config/stdlib/vacpp.hpp | 1 + test/all/Jamfile.v2 | 5 ++- test/boost_has_hash.ipp | 20 ++++++++-- test/boost_no_std_unordered.ipp | 27 ++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++++- test/no_std_unordered_fail.cpp | 37 +++++++++++++++++++ test/no_std_unordered_pass.cpp | 37 +++++++++++++++++++ 22 files changed, 195 insertions(+), 17 deletions(-) create mode 100644 test/boost_no_std_unordered.ipp create mode 100644 test/no_std_unordered_fail.cpp create mode 100644 test/no_std_unordered_pass.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index b02bda6a..a1c5517b 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,8 +3,8 @@ Acknowledgements - - + + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index ac30fa13..11932b66 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,8 +3,8 @@ Boost Macro Reference - - + + @@ -2406,6 +2406,18 @@ + +

+ BOOST_NO_STD_UNORDERD +

+ + +

+ The standard library does not support <unordered_map> and <unordered_set>. +

+ + +

BOOST_NO_UNICODE_LITERALS diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 2e16141f..17a76c72 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,8 +3,8 @@ Guidelines for Boost Authors - - + + diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index cdd610f0..fe45071e 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,8 +3,8 @@ Rationale - - + + diff --git a/doc/html/index.html b/doc/html/index.html index 2d82a1c3..8b25ea4b 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,8 +3,8 @@ Boost.Config - - + + @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: December 04, 2008 at 21:06:12 GMT

Last revised: December 21, 2008 at 17:07:02 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 29c4703b..17dcf597 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -565,6 +565,9 @@ scoped enumerations (`enum class`). [[`BOOST_NO_STATIC_ASSERT`][The compiler does not support `static_assert`. ]] +[[`BOOST_NO_STD_UNORDERD`][The standard library does not support + and . +]] [[`BOOST_NO_UNICODE_LITERALS`][The compiler does not support Unicode (`u8`, `u`, `U`) literals. ]] diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 01f1238d..ff1aed94 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -78,6 +78,11 @@ # define BOOST_NO_STD_ITERATOR_TRAITS #endif +// +// No std::unordered_* containers yet: +// +#define BOOST_NO_STD_UNORDERED + #if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310) // Intel C++ chokes over any non-trivial use of // this may be an overly restrictive define, but regex fails without it: diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 749781fe..3114094e 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -32,6 +32,10 @@ # define BOOST_HAS_HASH # define BOOST_HAS_SLIST #endif +// +// We never have the new C++0x unordered containers: +// +#define BOOST_NO_STD_UNORDERED // // Intrinsic type_traits support. diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index a619e3eb..8e1c811b 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -76,3 +76,8 @@ # define BOOST_HASH_MAP_HEADER # endif #endif + +#ifndef __GXX_EXPERIMENTAL_CXX0X__ +# define BOOST_NO_STD_UNORDERED +#endif + diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 3d0f76be..e488d13a 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -21,6 +21,10 @@ #ifndef MSIPL_WCHART #define BOOST_NO_STD_WSTRING #endif +// +// We never have the new C++0x unordered containers: +// +#define BOOST_NO_STD_UNORDERED #define BOOST_STDLIB "Modena C++ standard library" diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index f8d8752b..746878de 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -45,6 +45,10 @@ # define BOOST_NO_STD_USE_FACET # define BOOST_HAS_TWO_ARG_USE_FACET #endif +// +// We never have the new C++0x unordered containers: +// +#define BOOST_NO_STD_UNORDERED #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 ebf4c1f8..3e588824 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -151,3 +151,9 @@ # define _HP_INSTANTIATE_STD2_VL # endif #endif + +// +// We never have the new C++0x unordered containers: +// +#define BOOST_NO_STD_UNORDERED + diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index f3fa05b2..b493d49c 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -76,6 +76,7 @@ // #define BOOST_HAS_HASH #define BOOST_HAS_SLIST +#define BOOST_NO_STD_UNORDERED // // If this is GNU libstdc++2, then no and no std::wstring: diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index b1dabf23..8d0677ea 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -61,6 +61,9 @@ # endif #endif +#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION < 0x500) +# define BOOST_NO_STD_UNORDERED +#endif // // Without member template support enabled, their are no template // iterate constructors, and no std::allocator: diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 8321ee0c..c6c45660 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -11,6 +11,7 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES +#define BOOST_NO_STD_UNORDERED #define BOOST_STDLIB "Visual Age default standard library" diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 59bb7e3e..fd81f976 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 Wed Sep 24 11:44:22 2008 +# This file was automatically generated on Tue Dec 16 16:41:41 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -337,6 +337,9 @@ test-suite "BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN" : test-suite "BOOST_NO_STD_TYPEINFO" : [ run ../no_std_typeinfo_pass.cpp ] [ compile-fail ../no_std_typeinfo_fail.cpp ] ; +test-suite "BOOST_NO_STD_UNORDERED" : +[ run ../no_std_unordered_pass.cpp ] +[ compile-fail ../no_std_unordered_fail.cpp ] ; test-suite "BOOST_NO_STD_USE_FACET" : [ run ../no_std_use_facet_pass.cpp ] [ compile-fail ../no_std_use_facet_fail.cpp ] ; diff --git a/test/boost_has_hash.ipp b/test/boost_has_hash.ipp index c9cfeff8..fb89764d 100644 --- a/test/boost_has_hash.ipp +++ b/test/boost_has_hash.ipp @@ -11,9 +11,17 @@ // or hash_map classes. #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 -# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx -#include -#include +# ifdef BOOST_NO_STD_UNORDERED +# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx +# include +# include +# else + // If we have BOOST_NO_STD_UNORDERED *not* defined, then we must + // not include the headers as they clash with the C++0x + // headers. ie in any given translation unit we can include one + // or the other, but not both. +# define DISABLE_BOOST_HAS_HASH_TEST +# endif #else #include #include @@ -25,6 +33,8 @@ namespace boost_has_hash{ +#ifndef DISABLE_BOOST_HAS_HASH_TEST + template void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_set& ) { @@ -35,12 +45,16 @@ void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map& ) { } +#endif + int test() { +#ifndef DISABLE_BOOST_HAS_HASH_TEST BOOST_STD_EXTENSION_NAMESPACE::hash_set hs; foo(hs); BOOST_STD_EXTENSION_NAMESPACE::hash_map hm; foo(hm); +#endif return 0; } diff --git a/test/boost_no_std_unordered.ipp b/test/boost_no_std_unordered.ipp new file mode 100644 index 00000000..c7ad0869 --- /dev/null +++ b/test/boost_no_std_unordered.ipp @@ -0,0 +1,27 @@ +// (C) Copyright John Maddock and Dave Abrahams 2002. +// 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_STD_UNORDERED +// TITLE: and +// DESCRIPTION: Check for C++0x unordered container support + +#include +#include + +namespace boost_no_std_unordered{ + +int test() +{ + std::unordered_map im; + std::unordered_set is; + std::unordered_multimap imm; + std::unordered_multiset ims; + return im.size() + is.size() + imm.size() + ims.size(); // all zero +} + +} + diff --git a/test/config_info.cpp b/test/config_info.cpp index cb8cb146..eb12b9c1 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1001,6 +1001,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_STD_MIN_MAX); PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN); PRINT_MACRO(BOOST_NO_STD_TYPEINFO); + PRINT_MACRO(BOOST_NO_STD_UNORDERED); PRINT_MACRO(BOOST_NO_STD_USE_FACET); PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF); PRINT_MACRO(BOOST_NO_STD_WSTRING); @@ -1041,6 +1042,7 @@ void print_boost_macros() + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index 068f7525..c542a82f 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Wed Sep 24 11:44:22 2008 +// This file was automatically generated on Tue Dec 16 16:41:41 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -292,6 +292,11 @@ namespace boost_no_std_output_iterator_assign = empty_boost; #else namespace boost_no_std_typeinfo = empty_boost; #endif +#ifndef BOOST_NO_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +namespace boost_no_std_unordered = empty_boost; +#endif #ifndef BOOST_NO_STD_USE_FACET #include "boost_no_std_use_facet.ipp" #else @@ -1146,6 +1151,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_STD_TYPEINFO at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_std_unordered::test()) + { + std::cerr << "Failed test for BOOST_NO_STD_UNORDERED at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_std_use_facet::test()) { std::cerr << "Failed test for BOOST_NO_STD_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_std_unordered_fail.cpp b/test/no_std_unordered_fail.cpp new file mode 100644 index 00000000..afc31bea --- /dev/null +++ b/test/no_std_unordered_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_STD_UNORDERED +// This file should not compile, if it does then +// BOOST_NO_STD_UNORDERED should not be defined. +// See file boost_no_std_unordered.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_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_unordered::test(); +} + diff --git a/test/no_std_unordered_pass.cpp b/test/no_std_unordered_pass.cpp new file mode 100644 index 00000000..5ef2bf02 --- /dev/null +++ b/test/no_std_unordered_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_STD_UNORDERED +// This file should compile, if it does not then +// BOOST_NO_STD_UNORDERED should be defined. +// See file boost_no_std_unordered.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_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +namespace boost_no_std_unordered = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_std_unordered::test(); +} + From 8fd1d95cc7f76208a53faa2aa050a089438c050d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 1 Jan 2009 10:30:51 +0000 Subject: [PATCH 036/435] Fixes #2624. [SVN r50423] --- include/boost/config/platform/bsd.hpp | 7 ++++--- include/boost/config/suffix.hpp | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index 810d3707..f02b0e26 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -36,7 +36,8 @@ // FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in // and not in // -#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3)) || defined(__OpenBSD__) +#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\ + || defined(__OpenBSD__) || defined(__DragonFly__) # define BOOST_HAS_PTHREADS #endif @@ -55,13 +56,13 @@ #endif #if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \ - || (__NetBSD_GCC__ >= 2095003)) + || (__NetBSD_GCC__ >= 2095003) || defined(__DragonFly__)) # define BOOST_NO_CWCHAR #endif // // The BSD has macros only, no functions: // -#if !defined(__OpenBSD__) +#if !defined(__OpenBSD__) || defined(__DragonFly__) # define BOOST_NO_CTYPE_FUNCTIONS #endif diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index f71c644f..142e8e00 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -223,7 +223,8 @@ // from here then add to the appropriate compiler section): // #if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \ - || defined(_PTHREADS)) && !defined(BOOST_HAS_THREADS) + || defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \ + && !defined(BOOST_HAS_THREADS) # define BOOST_HAS_THREADS #endif From 010ceb0da2127fc11ccf187362c1a559719f9f58 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 14 Jan 2009 10:36:14 +0000 Subject: [PATCH 037/435] Fixes #2653. [SVN r50574] --- include/boost/config/select_platform_config.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index a4c7ad6a..4ce2c015 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -13,8 +13,8 @@ // in order to prevent macro expansion within the header // name (for example "linux" is a macro on linux systems). -#if defined(linux) || defined(__linux) || defined(__linux__) -// linux: +#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) +// linux, also other platforms (Hurd etc) that use GLIBC, should these really have their own config headers though? # define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp" #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) From 5bd10f3a39b56d775fee56e23c16cbd752f3d4ef Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Jan 2009 17:22:47 +0000 Subject: [PATCH 038/435] Try and fix linux regressions [SVN r50687] --- test/Jamfile.v2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a4e4df52..58b2904f 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -21,6 +21,8 @@ test-suite config : #input-files : #requirements single msvc:static msvc:static + linux:-lpthread + linux:-lrt ] [ run config_info.cpp : : : always_show_run_output single msvc:static msvc:static ] [ run config_info.cpp : : : always_show_run_output multi : config_info_threaded ] From e12af45eb218bd565b102b4c1b48ba5658ebd166 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 23 Jan 2009 09:56:49 +0000 Subject: [PATCH 039/435] Intel's emulation of gcc's two phase name lookup is buggy, this is Intel issue 532807, tracking number DPD200111849. [SVN r50739] --- include/boost/config/compiler/intel.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index bc3d4e99..1ab029ed 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -99,7 +99,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1100) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -159,7 +159,7 @@ template<> struct assert_intrinsic_wchar_t {}; // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1010) +#if (BOOST_INTEL_CXX_VERSION > 1100) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) From 00b6864bd27cf5c7b0429f73246128552f5fce2c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 25 Jan 2009 10:39:29 +0000 Subject: [PATCH 040/435] Try and fix *BSD linking errors. [SVN r50760] --- test/Jamfile.v2 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 58b2904f..59a88359 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -23,6 +23,8 @@ test-suite config single msvc:static msvc:static linux:-lpthread linux:-lrt + freebsd:-lpthread + bsd:-lpthread ] [ run config_info.cpp : : : always_show_run_output single msvc:static msvc:static ] [ run config_info.cpp : : : always_show_run_output multi : config_info_threaded ] From c87dcc8481eb9e45680d8625b9f828cc75ad3d80 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 30 Jan 2009 18:20:49 +0000 Subject: [PATCH 041/435] Fix up PDF generation options. [SVN r50910] --- doc/Jamfile.v2 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index ec4e95ac..8a5b6cdb 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -58,9 +58,6 @@ boostbook standalone ; - - - - +install pdf-install : standalone : . PDF ; From 6e576ea56bcaebcac1871f8a35a0dbaa379c86b0 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Tue, 10 Feb 2009 13:59:38 +0000 Subject: [PATCH 042/435] Update version number to 1.38.0 [SVN r51179] --- 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 990962fa..8269beb2 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 103800 +#define BOOST_VERSION 103900 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_38" +#define BOOST_LIB_VERSION "1_39" #endif From 9191bfe38b0fcefdd683535087cba354fa599111 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Feb 2009 10:05:58 +0000 Subject: [PATCH 043/435] Add PDF generation options to fix external links to point to the web site. Added a few more Boostbook based libs that were missed first time around. Fixed PDF naming issues. [SVN r51284] --- doc/Jamfile.v2 | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 8a5b6cdb..82109f08 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -55,6 +55,7 @@ boostbook standalone pdf:use.role.for.mediaobject=1 pdf:preferred.mediaobject.role=print pdf:admon.graphics.path=$(boost-images)/ + pdf:boost.url.prefix=http://www.boost.org/doc/libs/release/libs/config/doc/html ; From 6d726df91c8ee0292476f858cb21c3182d14d870 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Wed, 25 Feb 2009 18:04:27 +0000 Subject: [PATCH 044/435] Merge branches/cpp0x into trunk, enabling a bunch of BOOST_NO_* macros for C++0x early adopter feature tests [SVN r51444] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 4 +- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 8 +- include/boost/config/compiler/borland.hpp | 33 +++- include/boost/config/compiler/common_edg.hpp | 21 +++ include/boost/config/compiler/digitalmars.hpp | 17 ++ include/boost/config/compiler/gcc.hpp | 35 ++-- include/boost/config/compiler/hp_acc.hpp | 20 +++ include/boost/config/compiler/intel.hpp | 20 +++ include/boost/config/compiler/metrowerks.hpp | 17 ++ include/boost/config/compiler/mpw.hpp | 20 +++ include/boost/config/compiler/pgi.hpp | 20 +++ include/boost/config/compiler/sgi_mipspro.hpp | 20 +++ include/boost/config/compiler/sunpro_cc.hpp | 30 +++- include/boost/config/compiler/vacpp.hpp | 19 +++ include/boost/config/compiler/visualc.hpp | 21 +++ test/all/Jamfile.v2 | 47 +++++- test/boost_no_constexpr.ipp | 23 +++ test/boost_no_defaulted_functions.ipp | 24 +++ test/boost_no_deleted_functions.ipp | 24 +++ test/boost_no_explicit_cvt_ops.ipp | 26 +++ test/boost_no_raw_literals.ipp | 22 +++ test/config_info.cpp | 52 ++---- test/config_test.cpp | 152 +++++++++++++++++- ...ordered_fail.cpp => no_constexpr_fail.cpp} | 16 +- test/no_constexpr_pass.cpp | 37 +++++ test/no_defaulted_functions_fail.cpp | 37 +++++ test/no_defaulted_functions_pass.cpp | 37 +++++ test/no_deleted_functions_fail.cpp | 37 +++++ test/no_deleted_functions_pass.cpp | 37 +++++ test/no_explicit_cvt_ops_fail.cpp | 37 +++++ test/no_explicit_cvt_ops_pass.cpp | 37 +++++ test/no_raw_literals_fail.cpp | 37 +++++ test/no_raw_literals_pass.cpp | 37 +++++ 36 files changed, 955 insertions(+), 81 deletions(-) create mode 100644 test/boost_no_constexpr.ipp create mode 100644 test/boost_no_defaulted_functions.ipp create mode 100644 test/boost_no_deleted_functions.ipp create mode 100644 test/boost_no_explicit_cvt_ops.ipp create mode 100644 test/boost_no_raw_literals.ipp rename test/{no_std_unordered_fail.cpp => no_constexpr_fail.cpp} (63%) create mode 100644 test/no_constexpr_pass.cpp create mode 100644 test/no_defaulted_functions_fail.cpp create mode 100644 test/no_defaulted_functions_pass.cpp create mode 100644 test/no_deleted_functions_fail.cpp create mode 100644 test/no_deleted_functions_pass.cpp create mode 100644 test/no_explicit_cvt_ops_fail.cpp create mode 100644 test/no_explicit_cvt_ops_pass.cpp create mode 100644 test/no_raw_literals_fail.cpp create mode 100644 test/no_raw_literals_pass.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index a1c5517b..b02bda6a 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,8 +3,8 @@ Acknowledgements - - + + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 11932b66..56da61f0 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,8 +3,8 @@ Boost Macro Reference - - + + diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 17a76c72..2e16141f 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,8 +3,8 @@ Guidelines for Boost Authors - - + + diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index fe45071e..cdd610f0 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,8 +3,8 @@ Rationale - - + + diff --git a/doc/html/index.html b/doc/html/index.html index 8b25ea4b..10868480 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,8 +3,8 @@ Boost.Config - - + + @@ -28,7 +28,7 @@
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: December 21, 2008 at 17:07:02 GMT

Last revised: February 21, 2009 at 13:17:03 GMT


diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 4d2afb46..c0280601 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -16,9 +16,8 @@ # error "Compiler not supported or configured - please reconfigure" #endif -// last known and checked version is 0x600 (Builder X preview) -// or 0x593 (CodeGear C++ Builder 2007 December 2007 update): -#if (__BORLANDC__ > 0x593) && (__BORLANDC__ != 0x600) +// last known compiler version: +#if (__BORLANDC__ > 0x610) //# if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" //# else @@ -109,7 +108,8 @@ #endif // Borland C++ Builder 2007 December 2007 Update and below: -#if (__BORLANDC__ <= 0x593) +//#if (__BORLANDC__ <= 0x593) +#if (__BORLANDC__ <= 0x610) // Beman has asked Alisdair for more info // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS @@ -171,6 +171,8 @@ #if __BORLANDC__ >= 0x561 # ifndef __NO_LONG_LONG # define BOOST_HAS_LONG_LONG +# else +# define BOOST_NO_LONG_LONG # endif // On non-Win32 platforms let the platform config figure this out: # ifdef _WIN32 @@ -211,6 +213,29 @@ #ifndef __STRICT_ANSI__ # define BOOST_HAS_DECLSPEC #endif + +// +// C++0x features +// +// See above for BOOST_NO_LONG_LONG + +#if __BORLANDC__ < 0x0610 +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DECLTYPE +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_VARIADIC_TEMPLATES +#endif + +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported // // ABI fixing headers: // diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index cba8b2ae..8d31e332 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -55,8 +55,29 @@ # if !defined(__NO_LONG_LONG) # define BOOST_HAS_LONG_LONG +# else +# define BOOST_NO_LONG_LONG # endif +// +// C++0x features +// +// See above for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES #ifdef c_plusplus // EDG has "long long" in non-strict mode // However, some libraries have insufficient "long long" support diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index a87af904..43fa2352 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -56,6 +56,23 @@ # define BOOST_NO_EXCEPTIONS #endif +// +// C++0x features +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES #if __DMC__ < 0x800 #error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 639d9700..671fa229 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -104,30 +104,41 @@ // // C++0x features // -#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) + +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_UNICODE_LITERALS + +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are // passed on the command line, which in turn defines -// __GXX_EXPERIMENTAL_CXX0X__. -# if defined(__GXX_EXPERIMENTAL_CXX0X__) -# define BOOST_HAS_STATIC_ASSERT -# define BOOST_HAS_VARIADIC_TMPL -# define BOOST_HAS_RVALUE_REFS -# define BOOST_HAS_DECLTYPE -# endif +// __GXX_EXPERIMENTAL_CXX0X__. +# define BOOST_HAS_DECLTYPE +# define BOOST_HAS_RVALUE_REFS +# define BOOST_HAS_STATIC_ASSERT +#else +# define BOOST_NO_DECLTYPE +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_STATIC_ASSERT #endif #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) # define BOOST_NO_INITIALIZER_LISTS #endif -// -// Potential C++0x features -// - // Variadic templates compiler: // http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html #ifdef __VARIADIC_TEMPLATES # define BOOST_HAS_VARIADIC_TMPL +#else +# define BOOST_NO_VARIADIC_TEMPLATES #endif // ConceptGCC compiler: diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index 5a766c59..fe8bcdd9 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -85,6 +85,26 @@ # endif //PA-RISC #endif +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + // // last known and checked version for HP-UX/ia64 is 61300 // last known and checked version for PA-RISC is 38000 diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 1ab029ed..b7b918c1 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -157,6 +157,26 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + // // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1100) diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index cbb588fe..a3464fd9 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -84,9 +84,26 @@ // // C++0x features // +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// #if __MWERKS__ > 0x3206 && __option(rvalue_refs) # define BOOST_HAS_RVALUE_REFS +#else +# define BOOST_NO_RVALUE_REFERENCES #endif +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index cfe9461e..b3eeb5cf 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -36,6 +36,26 @@ # define BOOST_NO_INITIALIZER_LISTS #endif +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + // // versions check: // we don't support MPW prior to version 8.9: diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 2cb89b89..ec007162 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -28,6 +28,26 @@ # error "Pgi compiler not configured - please reconfigure" #endif +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp index 8e578d71..b237f85b 100644 --- a/include/boost/config/compiler/sgi_mipspro.hpp +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -23,6 +23,26 @@ #undef BOOST_DEDUCED_TYPENAME #define BOOST_NO_INITIALIZER_LISTS +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index bee32277..f650ece9 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -76,10 +76,34 @@ #define BOOST_NO_ADL_BARRIER #define BOOST_NO_INITIALIZER_LISTS +// +// C++0x features +// + #if(__SUNPRO_CC >= 0x590) # define BOOST_HAS_LONG_LONG +#else +# define BOOST_NO_LONG_LONG #endif +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + +// +// Version +// #define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC) @@ -96,9 +120,3 @@ # error "Unknown compiler version - please run the configure tests and report the results" # endif #endif - - - - - - diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index ece883f6..3d0be10b 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -56,6 +56,25 @@ // Some versions of the compiler have issues with default arguments on partial specializations #define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// +// C++0x features +// +// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG +// +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index d6a474a9..7da5ee3d 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -121,6 +121,8 @@ #endif #if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS) # define BOOST_HAS_LONG_LONG +#else +# define BOOST_NO_LONG_LONG #endif #if (_MSC_VER >= 1400) && !defined(_DEBUG) # define BOOST_HAS_NRVO @@ -141,6 +143,25 @@ // #define BOOST_HAS_DECLSPEC // +// C++0x features +// +// See above for BOOST_NO_LONG_LONG + +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES +// // prefix and suffix headers: // #ifndef BOOST_ABI_PREFIX diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index fd81f976..69e7eb69 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 Tue Dec 16 16:41:41 2008 +# This file was automatically generated on Fri Feb 20 21:15:18 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -190,6 +190,15 @@ test-suite "BOOST_NO_AUTO_PTR" : test-suite "BOOST_BCB_PARTIAL_SPECIALIZATION_BUG" : [ run ../no_bcb_partial_spec_pass.cpp ] [ compile-fail ../no_bcb_partial_spec_fail.cpp ] ; +test-suite "BOOST_NO_CHAR16_T" : +[ run ../no_char16_t_pass.cpp ] +[ compile-fail ../no_char16_t_fail.cpp ] ; +test-suite "BOOST_NO_CHAR32_T" : +[ run ../no_char32_t_pass.cpp ] +[ compile-fail ../no_char32_t_fail.cpp ] ; +test-suite "BOOST_NO_CONSTEXPR" : +[ run ../no_constexpr_pass.cpp ] +[ compile-fail ../no_constexpr_fail.cpp ] ; test-suite "BOOST_NO_CTYPE_FUNCTIONS" : [ run ../no_ctype_functions_pass.cpp ] [ compile-fail ../no_ctype_functions_fail.cpp ] ; @@ -205,9 +214,18 @@ test-suite "BOOST_NO_CWCHAR" : test-suite "BOOST_NO_CWCTYPE" : [ run ../no_cwctype_pass.cpp ] [ compile-fail ../no_cwctype_fail.cpp ] ; +test-suite "BOOST_NO_DECLTYPE" : +[ run ../no_decltype_pass.cpp ] +[ compile-fail ../no_decltype_fail.cpp ] ; test-suite "BOOST_DEDUCED_TYPENAME" : [ run ../no_ded_typename_pass.cpp ] [ compile-fail ../no_ded_typename_fail.cpp ] ; +test-suite "BOOST_NO_DEFAULTED_FUNCTIONS" : +[ run ../no_defaulted_functions_pass.cpp ] +[ compile-fail ../no_defaulted_functions_fail.cpp ] ; +test-suite "BOOST_NO_DELETED_FUNCTIONS" : +[ run ../no_deleted_functions_pass.cpp ] +[ compile-fail ../no_deleted_functions_fail.cpp ] ; test-suite "BOOST_NO_DEPENDENT_NESTED_DERIVATIONS" : [ run ../no_dep_nested_class_pass.cpp ] [ compile-fail ../no_dep_nested_class_fail.cpp ] ; @@ -220,9 +238,15 @@ test-suite "BOOST_NO_EXCEPTIONS" : test-suite "BOOST_NO_EXCEPTION_STD_NAMESPACE" : [ run ../no_excep_std_pass.cpp ] [ compile-fail ../no_excep_std_fail.cpp ] ; +test-suite "BOOST_NO_EXPLICIT_CONVERSION_OPERATORS" : +[ run ../no_explicit_cvt_ops_pass.cpp ] +[ compile-fail ../no_explicit_cvt_ops_fail.cpp ] ; test-suite "BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS" : [ run ../no_exp_func_tem_arg_pass.cpp ] [ compile-fail ../no_exp_func_tem_arg_fail.cpp ] ; +test-suite "BOOST_NO_EXTERN_TEMPLATE" : +[ run ../no_extern_template_pass.cpp ] +[ compile-fail ../no_extern_template_fail.cpp ] ; test-suite "BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS" : [ run ../no_function_type_spec_pass.cpp ] [ compile-fail ../no_function_type_spec_fail.cpp ] ; @@ -262,6 +286,9 @@ test-suite "BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS" : test-suite "BOOST_NO_LONG_LONG_NUMERIC_LIMITS" : [ run ../no_ll_limits_pass.cpp ] [ compile-fail ../no_ll_limits_fail.cpp ] ; +test-suite "BOOST_NO_LONG_LONG" : +[ run ../no_long_long_pass.cpp ] +[ compile-fail ../no_long_long_fail.cpp ] ; test-suite "BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS" : [ run ../no_mem_func_spec_pass.cpp ] [ compile-fail ../no_mem_func_spec_fail.cpp ] ; @@ -295,18 +322,30 @@ test-suite "BOOST_NO_PRIVATE_IN_AGGREGATE" : test-suite "BOOST_NO_POINTER_TO_MEMBER_CONST" : [ run ../no_ptr_mem_const_pass.cpp ] [ compile-fail ../no_ptr_mem_const_fail.cpp ] ; +test-suite "BOOST_NO_RAW_LITERALS" : +[ run ../no_raw_literals_pass.cpp ] +[ compile-fail ../no_raw_literals_fail.cpp ] ; test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : [ run ../no_ret_det_pass.cpp ] [ compile-fail ../no_ret_det_fail.cpp ] ; test-suite "BOOST_NO_RTTI" : [ run ../no_rtti_pass.cpp ] [ compile-fail ../no_rtti_fail.cpp ] ; +test-suite "BOOST_NO_RVALUE_REFERENCES" : +[ run ../no_rvalue_references_pass.cpp ] +[ compile-fail ../no_rvalue_references_fail.cpp ] ; +test-suite "BOOST_NO_SCOPED_ENUMS" : +[ run ../no_scoped_enums_pass.cpp ] +[ compile-fail ../no_scoped_enums_fail.cpp ] ; test-suite "BOOST_NO_SFINAE" : [ run ../no_sfinae_pass.cpp ] [ compile-fail ../no_sfinae_fail.cpp ] ; test-suite "BOOST_NO_STRINGSTREAM" : [ run ../no_sstream_pass.cpp ] [ compile-fail ../no_sstream_fail.cpp ] ; +test-suite "BOOST_NO_STATIC_ASSERT" : +[ run ../no_static_assert_pass.cpp ] +[ compile-fail ../no_static_assert_fail.cpp ] ; test-suite "BOOST_NO_STDC_NAMESPACE" : [ run ../no_stdc_namespace_pass.cpp ] [ compile-fail ../no_stdc_namespace_fail.cpp ] ; @@ -367,6 +406,9 @@ test-suite "BOOST_NO_TYPEID" : test-suite "BOOST_NO_TYPENAME_WITH_CTOR" : [ run ../no_typename_with_ctor_pass.cpp ] [ compile-fail ../no_typename_with_ctor_fail.cpp ] ; +test-suite "BOOST_NO_UNICODE_LITERALS" : +[ run ../no_unicode_literals_pass.cpp ] +[ compile-fail ../no_unicode_literals_fail.cpp ] ; test-suite "BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL" : [ run ../no_using_breaks_adl_pass.cpp ] [ compile-fail ../no_using_breaks_adl_fail.cpp ] ; @@ -376,6 +418,9 @@ test-suite "BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE" : test-suite "BOOST_NO_USING_TEMPLATE" : [ run ../no_using_template_pass.cpp ] [ compile-fail ../no_using_template_fail.cpp ] ; +test-suite "BOOST_NO_VARIADIC_TEMPLATES" : +[ run ../no_variadic_templates_pass.cpp ] +[ compile-fail ../no_variadic_templates_fail.cpp ] ; test-suite "BOOST_NO_VOID_RETURNS" : [ run ../no_void_returns_pass.cpp ] [ compile-fail ../no_void_returns_fail.cpp ] ; diff --git a/test/boost_no_constexpr.ipp b/test/boost_no_constexpr.ipp new file mode 100644 index 00000000..4ab80a02 --- /dev/null +++ b/test/boost_no_constexpr.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_CONSTEXPR +// TITLE: C++0x constexpr unavailable +// DESCRIPTION: The compiler does not support C++0x constexpr + +namespace boost_no_constexpr { + +constexpr int square(int x) { return x * x; } // from N2235 + +int test() +{ + int i = square(5); + return 0; +} + +} diff --git a/test/boost_no_defaulted_functions.ipp b/test/boost_no_defaulted_functions.ipp new file mode 100644 index 00000000..b7c5c9a7 --- /dev/null +++ b/test/boost_no_defaulted_functions.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_DEFAULTED_FUNCTIONS +// TITLE: C++0x defaulted functions unavailable +// DESCRIPTION: The compiler does not support C++0x defaulted functions + +namespace boost_no_defaulted_functions { + + struct foo { + foo() = default; + }; + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_deleted_functions.ipp b/test/boost_no_deleted_functions.ipp new file mode 100644 index 00000000..043fcda0 --- /dev/null +++ b/test/boost_no_deleted_functions.ipp @@ -0,0 +1,24 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_DELETED_FUNCTIONS +// TITLE: C++0x delete functions unavailable +// DESCRIPTION: The compiler does not support C++0x delete functions + +namespace boost_no_constexpr { + + struct foo { + foo() = delete; + }; + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_explicit_cvt_ops.ipp b/test/boost_no_explicit_cvt_ops.ipp new file mode 100644 index 00000000..2293c247 --- /dev/null +++ b/test/boost_no_explicit_cvt_ops.ipp @@ -0,0 +1,26 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_EXPLICIT_CONVERSION_OPERATORS +// TITLE: C++0x explicit conversion operators unavailable +// DESCRIPTION: The compiler does not support C++0x explicit conversion operators + +namespace boost_no_explicit_conversion_operators { + + struct foo { + explicit operator int() { return 1; } + }; + +int test() +{ + foo f; + int i = int(f); + return 0; +} + +} diff --git a/test/boost_no_raw_literals.ipp b/test/boost_no_raw_literals.ipp new file mode 100644 index 00000000..54d22042 --- /dev/null +++ b/test/boost_no_raw_literals.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_RAW_LITERALS +// TITLE: C++0x raw string literals unavailable +// DESCRIPTION: The compiler does not support C++0x raw string literals + +namespace boost_no_raw_literals { + +int test() +{ + const char* s = R"[abc]"; + const wchar_t* ws = LR"[abc]"; + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index eb12b9c1..1b75f8cf 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -956,16 +956,24 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_AUTO_PTR); + PRINT_MACRO(BOOST_NO_CHAR16_T); + PRINT_MACRO(BOOST_NO_CHAR32_T); + PRINT_MACRO(BOOST_NO_CONSTEXPR); PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_CWCHAR); PRINT_MACRO(BOOST_NO_CWCTYPE); + PRINT_MACRO(BOOST_NO_DECLTYPE); + PRINT_MACRO(BOOST_NO_DEFAULTED_FUNCTIONS); + PRINT_MACRO(BOOST_NO_DELETED_FUNCTIONS); PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); PRINT_MACRO(BOOST_NO_EXCEPTIONS); PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE); + PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS); PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); + PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE); PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); @@ -977,6 +985,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_IS_ABSTRACT); PRINT_MACRO(BOOST_NO_LIMITS); PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS); + PRINT_MACRO(BOOST_NO_LONG_LONG); PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS); PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES); @@ -989,8 +998,12 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_RAW_LITERALS); PRINT_MACRO(BOOST_NO_RTTI); + PRINT_MACRO(BOOST_NO_RVALUE_REFERENCES); + PRINT_MACRO(BOOST_NO_SCOPED_ENUMS); PRINT_MACRO(BOOST_NO_SFINAE); + PRINT_MACRO(BOOST_NO_STATIC_ASSERT); PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); PRINT_MACRO(BOOST_NO_STD_DISTANCE); @@ -1014,37 +1027,13 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP); PRINT_MACRO(BOOST_NO_TYPEID); PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR); + PRINT_MACRO(BOOST_NO_UNICODE_LITERALS); PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION); PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE); PRINT_MACRO(BOOST_NO_USING_TEMPLATE); + PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); PRINT_MACRO(BOOST_NO_VOID_RETURNS); - - - - - - - - - - - - - - - - - - - - - - - - - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); @@ -1073,14 +1062,3 @@ int main() return 0; } - - - - - - - - - - - diff --git a/test/config_test.cpp b/test/config_test.cpp index c542a82f..f9677e03 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Tue Dec 16 16:41:41 2008 +// This file was automatically generated on Fri Feb 20 21:15:18 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -47,6 +47,21 @@ namespace boost_no_auto_ptr = empty_boost; #else namespace boost_bcb_partial_specialization_bug = empty_boost; #endif +#ifndef BOOST_NO_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +namespace boost_no_char16_t = empty_boost; +#endif +#ifndef BOOST_NO_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +namespace boost_no_char32_t = empty_boost; +#endif +#ifndef BOOST_NO_CONSTEXPR +#include "boost_no_constexpr.ipp" +#else +namespace boost_no_constexpr = empty_boost; +#endif #ifndef BOOST_NO_CTYPE_FUNCTIONS #include "boost_no_ctype_functions.ipp" #else @@ -72,11 +87,26 @@ namespace boost_no_cwchar = empty_boost; #else namespace boost_no_cwctype = empty_boost; #endif +#ifndef BOOST_NO_DECLTYPE +#include "boost_no_decltype.ipp" +#else +namespace boost_no_decltype = empty_boost; +#endif #ifndef BOOST_DEDUCED_TYPENAME #include "boost_no_ded_typename.ipp" #else namespace boost_deduced_typename = empty_boost; #endif +#ifndef BOOST_NO_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +namespace boost_no_defaulted_functions = empty_boost; +#endif +#ifndef BOOST_NO_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +namespace boost_no_deleted_functions = empty_boost; +#endif #ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS #include "boost_no_dep_nested_class.ipp" #else @@ -97,11 +127,21 @@ namespace boost_no_exceptions = empty_boost; #else namespace boost_no_exception_std_namespace = empty_boost; #endif +#ifndef BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +namespace boost_no_explicit_conversion_operators = empty_boost; +#endif #ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS #include "boost_no_exp_func_tem_arg.ipp" #else namespace boost_no_explicit_function_template_arguments = empty_boost; #endif +#ifndef BOOST_NO_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +namespace boost_no_extern_template = empty_boost; +#endif #ifndef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS #include "boost_no_function_type_spec.ipp" #else @@ -167,6 +207,11 @@ namespace boost_no_limits_compile_time_constants = empty_boost; #else namespace boost_no_long_long_numeric_limits = empty_boost; #endif +#ifndef BOOST_NO_LONG_LONG +#include "boost_no_long_long.ipp" +#else +namespace boost_no_long_long = empty_boost; +#endif #ifndef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS #include "boost_no_mem_func_spec.ipp" #else @@ -222,6 +267,11 @@ namespace boost_no_private_in_aggregate = empty_boost; #else namespace boost_no_pointer_to_member_const = empty_boost; #endif +#ifndef BOOST_NO_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +namespace boost_no_raw_literals = empty_boost; +#endif #ifndef BOOST_NO_UNREACHABLE_RETURN_DETECTION #include "boost_no_ret_det.ipp" #else @@ -232,6 +282,16 @@ namespace boost_no_unreachable_return_detection = empty_boost; #else namespace boost_no_rtti = empty_boost; #endif +#ifndef BOOST_NO_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +namespace boost_no_rvalue_references = empty_boost; +#endif +#ifndef BOOST_NO_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +namespace boost_no_scoped_enums = empty_boost; +#endif #ifndef BOOST_NO_SFINAE #include "boost_no_sfinae.ipp" #else @@ -242,6 +302,11 @@ namespace boost_no_sfinae = empty_boost; #else namespace boost_no_stringstream = empty_boost; #endif +#ifndef BOOST_NO_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +namespace boost_no_static_assert = empty_boost; +#endif #ifndef BOOST_NO_STDC_NAMESPACE #include "boost_no_stdc_namespace.ipp" #else @@ -342,6 +407,11 @@ namespace boost_no_typeid = empty_boost; #else namespace boost_no_typename_with_ctor = empty_boost; #endif +#ifndef BOOST_NO_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +namespace boost_no_unicode_literals = empty_boost; +#endif #ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #include "boost_no_using_breaks_adl.ipp" #else @@ -357,6 +427,11 @@ namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost; #else namespace boost_no_using_template = empty_boost; #endif +#ifndef BOOST_NO_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +namespace boost_no_variadic_templates = empty_boost; +#endif #ifndef BOOST_NO_VOID_RETURNS #include "boost_no_void_returns.ipp" #else @@ -906,6 +981,21 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_BCB_PARTIAL_SPECIALIZATION_BUG at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_char16_t::test()) + { + std::cerr << "Failed test for BOOST_NO_CHAR16_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_char32_t::test()) + { + std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_constexpr::test()) + { + std::cerr << "Failed test for BOOST_NO_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_ctype_functions::test()) { std::cerr << "Failed test for BOOST_NO_CTYPE_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -931,11 +1021,26 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CWCTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_decltype::test()) + { + std::cerr << "Failed test for BOOST_NO_DECLTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_deduced_typename::test()) { std::cerr << "Failed test for BOOST_DEDUCED_TYPENAME at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_defaulted_functions::test()) + { + std::cerr << "Failed test for BOOST_NO_DEFAULTED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_deleted_functions::test()) + { + std::cerr << "Failed test for BOOST_NO_DELETED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_dependent_nested_derivations::test()) { std::cerr << "Failed test for BOOST_NO_DEPENDENT_NESTED_DERIVATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -956,11 +1061,21 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_EXCEPTION_STD_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_explicit_conversion_operators::test()) + { + std::cerr << "Failed test for BOOST_NO_EXPLICIT_CONVERSION_OPERATORS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_explicit_function_template_arguments::test()) { std::cerr << "Failed test for BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_extern_template::test()) + { + std::cerr << "Failed test for BOOST_NO_EXTERN_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_function_type_specializations::test()) { std::cerr << "Failed test for BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1026,6 +1141,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_LONG_LONG_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_long_long::test()) + { + std::cerr << "Failed test for BOOST_NO_LONG_LONG at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_member_function_specializations::test()) { std::cerr << "Failed test for BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1081,6 +1201,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_CONST at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_raw_literals::test()) + { + std::cerr << "Failed test for BOOST_NO_RAW_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_unreachable_return_detection::test()) { std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1091,6 +1216,16 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_RTTI at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_rvalue_references::test()) + { + std::cerr << "Failed test for BOOST_NO_RVALUE_REFERENCES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_scoped_enums::test()) + { + std::cerr << "Failed test for BOOST_NO_SCOPED_ENUMS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_sfinae::test()) { std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1101,6 +1236,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_STRINGSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_static_assert::test()) + { + std::cerr << "Failed test for BOOST_NO_STATIC_ASSERT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_stdc_namespace::test()) { std::cerr << "Failed test for BOOST_NO_STDC_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1201,6 +1341,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_TYPENAME_WITH_CTOR at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_unicode_literals::test()) + { + std::cerr << "Failed test for BOOST_NO_UNICODE_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_function_scope_using_declaration_breaks_adl::test()) { std::cerr << "Failed test for BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1216,6 +1361,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_USING_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_variadic_templates::test()) + { + std::cerr << "Failed test for BOOST_NO_VARIADIC_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_void_returns::test()) { std::cerr << "Failed test for BOOST_NO_VOID_RETURNS at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_std_unordered_fail.cpp b/test/no_constexpr_fail.cpp similarity index 63% rename from test/no_std_unordered_fail.cpp rename to test/no_constexpr_fail.cpp index afc31bea..9406f784 100644 --- a/test/no_std_unordered_fail.cpp +++ b/test/no_constexpr_fail.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// This file was automatically generated on Thu Jun 19 16:26:16 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -6,14 +6,14 @@ // 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// Revision $Id$ // -// Test file for macro BOOST_NO_STD_UNORDERED +// Test file for macro BOOST_NO_CONSTEXPR // This file should not compile, if it does then -// BOOST_NO_STD_UNORDERED should not be defined. -// See file boost_no_std_unordered.ipp for details +// BOOST_NO_CONSTEXPR should not be defined. +// See file boost_no_constexpr.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats // the objective of this file: @@ -24,14 +24,14 @@ #include #include "test.hpp" -#ifdef BOOST_NO_STD_UNORDERED -#include "boost_no_std_unordered.ipp" +#ifdef BOOST_NO_CONSTEXPR +#include "boost_no_constexpr.ipp" #else #error "this file should not compile" #endif int main( int, char *[] ) { - return boost_no_std_unordered::test(); + return boost_no_constexpr::test(); } diff --git a/test/no_constexpr_pass.cpp b/test/no_constexpr_pass.cpp new file mode 100644 index 00000000..2c86f4e1 --- /dev/null +++ b/test/no_constexpr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// 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_CONSTEXPR +// This file should compile, if it does not then +// BOOST_NO_CONSTEXPR should be defined. +// See file boost_no_constexpr.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_CONSTEXPR +#include "boost_no_constexpr.ipp" +#else +namespace boost_no_constexpr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_constexpr::test(); +} + diff --git a/test/no_defaulted_functions_fail.cpp b/test/no_defaulted_functions_fail.cpp new file mode 100644 index 00000000..eb681802 --- /dev/null +++ b/test/no_defaulted_functions_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:01:41 2008 +// 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_DEFAULTED_FUNCTIONS +// This file should not compile, if it does then +// BOOST_NO_DEFAULTED_FUNCTIONS should not be defined. +// See file boost_no_defaulted_functions.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_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_defaulted_functions::test(); +} + diff --git a/test/no_defaulted_functions_pass.cpp b/test/no_defaulted_functions_pass.cpp new file mode 100644 index 00000000..eae0c65d --- /dev/null +++ b/test/no_defaulted_functions_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:01:41 2008 +// 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_DEFAULTED_FUNCTIONS +// This file should compile, if it does not then +// BOOST_NO_DEFAULTED_FUNCTIONS should be defined. +// See file boost_no_defaulted_functions.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_DEFAULTED_FUNCTIONS +#include "boost_no_defaulted_functions.ipp" +#else +namespace boost_no_defaulted_functions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_defaulted_functions::test(); +} + diff --git a/test/no_deleted_functions_fail.cpp b/test/no_deleted_functions_fail.cpp new file mode 100644 index 00000000..4d90d761 --- /dev/null +++ b/test/no_deleted_functions_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// 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_DELETED_FUNCTIONS +// This file should not compile, if it does then +// BOOST_NO_DELETED_FUNCTIONS should not be defined. +// See file boost_no_deleted_functions.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_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_deleted_functions::test(); +} + diff --git a/test/no_deleted_functions_pass.cpp b/test/no_deleted_functions_pass.cpp new file mode 100644 index 00000000..b9563250 --- /dev/null +++ b/test/no_deleted_functions_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// 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_DELETED_FUNCTIONS +// This file should compile, if it does not then +// BOOST_NO_DELETED_FUNCTIONS should be defined. +// See file boost_no_deleted_functions.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_DELETED_FUNCTIONS +#include "boost_no_deleted_functions.ipp" +#else +namespace boost_no_deleted_functions = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_deleted_functions::test(); +} + diff --git a/test/no_explicit_cvt_ops_fail.cpp b/test/no_explicit_cvt_ops_fail.cpp new file mode 100644 index 00000000..a9e83183 --- /dev/null +++ b/test/no_explicit_cvt_ops_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:51:15 2008 +// 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_EXPLICIT_CONVERSION_OPERATORS +// This file should not compile, if it does then +// BOOST_NO_EXPLICIT_CONVERSION_OPERATORS should not be defined. +// See file boost_no_explicit_cvt_ops.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_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_conversion_operators::test(); +} + diff --git a/test/no_explicit_cvt_ops_pass.cpp b/test/no_explicit_cvt_ops_pass.cpp new file mode 100644 index 00000000..91efc1ea --- /dev/null +++ b/test/no_explicit_cvt_ops_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 20 11:51:15 2008 +// 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_EXPLICIT_CONVERSION_OPERATORS +// This file should compile, if it does not then +// BOOST_NO_EXPLICIT_CONVERSION_OPERATORS should be defined. +// See file boost_no_explicit_cvt_ops.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_EXPLICIT_CONVERSION_OPERATORS +#include "boost_no_explicit_cvt_ops.ipp" +#else +namespace boost_no_explicit_conversion_operators = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_explicit_conversion_operators::test(); +} + diff --git a/test/no_raw_literals_fail.cpp b/test/no_raw_literals_fail.cpp new file mode 100644 index 00000000..48ed107b --- /dev/null +++ b/test/no_raw_literals_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// 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_RAW_LITERALS +// This file should not compile, if it does then +// BOOST_NO_RAW_LITERALS should not be defined. +// See file boost_no_raw_literals.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_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_raw_literals::test(); +} + diff --git a/test/no_raw_literals_pass.cpp b/test/no_raw_literals_pass.cpp new file mode 100644 index 00000000..725b6c15 --- /dev/null +++ b/test/no_raw_literals_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Jun 19 16:26:16 2008 +// 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_RAW_LITERALS +// This file should compile, if it does not then +// BOOST_NO_RAW_LITERALS should be defined. +// See file boost_no_raw_literals.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_RAW_LITERALS +#include "boost_no_raw_literals.ipp" +#else +namespace boost_no_raw_literals = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_raw_literals::test(); +} + From 4d457cdf17ce01ee1a9ecc5119215a671c0343fd Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 27 Feb 2009 13:15:19 +0000 Subject: [PATCH 045/435] config: revert unintentional delete [SVN r51470] --- test/no_std_unordered_fail.cpp | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/no_std_unordered_fail.cpp diff --git a/test/no_std_unordered_fail.cpp b/test/no_std_unordered_fail.cpp new file mode 100644 index 00000000..afc31bea --- /dev/null +++ b/test/no_std_unordered_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Dec 16 16:41:40 2008 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_STD_UNORDERED +// This file should not compile, if it does then +// BOOST_NO_STD_UNORDERED should not be defined. +// See file boost_no_std_unordered.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_STD_UNORDERED +#include "boost_no_std_unordered.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_std_unordered::test(); +} + From dade549b8b077612a9ffb17343ae4e5170a0ec7f Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 27 Feb 2009 13:23:06 +0000 Subject: [PATCH 046/435] config: add cpp0x files not added after merge [SVN r51471] --- test/boost_no_char16_t.ipp | 21 ++++++++++++++++ test/boost_no_char32_t.ipp | 21 ++++++++++++++++ test/boost_no_decltype.ipp | 22 +++++++++++++++++ test/boost_no_extern_template.ipp | 22 +++++++++++++++++ test/boost_no_long_long.ipp | 36 +++++++++++++++++++++++++++ test/boost_no_rvalue_references.ipp | 26 +++++++++++++++++++ test/boost_no_scoped_enums.ipp | 21 ++++++++++++++++ test/boost_no_static_assert.ipp | 20 +++++++++++++++ test/boost_no_unicode_literals.ipp | 23 +++++++++++++++++ test/boost_no_variadic_templates.ipp | 21 ++++++++++++++++ test/no_char16_t_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_char16_t_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_char32_t_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_char32_t_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_decltype_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_decltype_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_extern_template_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_extern_template_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_long_long_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_long_long_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_rvalue_references_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_rvalue_references_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_scoped_enums_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_scoped_enums_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_static_assert_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_static_assert_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_unicode_literals_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_unicode_literals_pass.cpp | 37 ++++++++++++++++++++++++++++ test/no_variadic_templates_fail.cpp | 37 ++++++++++++++++++++++++++++ test/no_variadic_templates_pass.cpp | 37 ++++++++++++++++++++++++++++ 30 files changed, 973 insertions(+) create mode 100644 test/boost_no_char16_t.ipp create mode 100644 test/boost_no_char32_t.ipp create mode 100644 test/boost_no_decltype.ipp create mode 100644 test/boost_no_extern_template.ipp create mode 100644 test/boost_no_long_long.ipp create mode 100644 test/boost_no_rvalue_references.ipp create mode 100644 test/boost_no_scoped_enums.ipp create mode 100644 test/boost_no_static_assert.ipp create mode 100644 test/boost_no_unicode_literals.ipp create mode 100644 test/boost_no_variadic_templates.ipp create mode 100644 test/no_char16_t_fail.cpp create mode 100644 test/no_char16_t_pass.cpp create mode 100644 test/no_char32_t_fail.cpp create mode 100644 test/no_char32_t_pass.cpp create mode 100644 test/no_decltype_fail.cpp create mode 100644 test/no_decltype_pass.cpp create mode 100644 test/no_extern_template_fail.cpp create mode 100644 test/no_extern_template_pass.cpp create mode 100644 test/no_long_long_fail.cpp create mode 100644 test/no_long_long_pass.cpp create mode 100644 test/no_rvalue_references_fail.cpp create mode 100644 test/no_rvalue_references_pass.cpp create mode 100644 test/no_scoped_enums_fail.cpp create mode 100644 test/no_scoped_enums_pass.cpp create mode 100644 test/no_static_assert_fail.cpp create mode 100644 test/no_static_assert_pass.cpp create mode 100644 test/no_unicode_literals_fail.cpp create mode 100644 test/no_unicode_literals_pass.cpp create mode 100644 test/no_variadic_templates_fail.cpp create mode 100644 test/no_variadic_templates_pass.cpp diff --git a/test/boost_no_char16_t.ipp b/test/boost_no_char16_t.ipp new file mode 100644 index 00000000..b519b825 --- /dev/null +++ b/test/boost_no_char16_t.ipp @@ -0,0 +1,21 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_CHAR16_T +// TITLE: C++0x char16_t unavailable +// DESCRIPTION: The compiler does not support C++0x char16_t + +namespace boost_no_char16_t { + +int test() +{ + char16_t c; + return 0; +} + +} diff --git a/test/boost_no_char32_t.ipp b/test/boost_no_char32_t.ipp new file mode 100644 index 00000000..4bd05407 --- /dev/null +++ b/test/boost_no_char32_t.ipp @@ -0,0 +1,21 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_CHAR32_T +// TITLE: C++0x char32_t unavailable +// DESCRIPTION: The compiler does not support C++0x char32_t + +namespace boost_no_char32_t { + +int test() +{ + char32_t c; + return 0; +} + +} diff --git a/test/boost_no_decltype.ipp b/test/boost_no_decltype.ipp new file mode 100644 index 00000000..c712e892 --- /dev/null +++ b/test/boost_no_decltype.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_DECLTYPE +// TITLE: C++0x decltype unavailable +// DESCRIPTION: The compiler does not support C++0x decltype + +namespace boost_no_decltype { + +int test() +{ + int i; + decltype(i) j; + return 0; +} + +} diff --git a/test/boost_no_extern_template.ipp b/test/boost_no_extern_template.ipp new file mode 100644 index 00000000..732eedc6 --- /dev/null +++ b/test/boost_no_extern_template.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_EXTERN_TEMPLATE +// TITLE: C++0x extern template unavailable +// DESCRIPTION: The compiler does not support C++0x extern template + +namespace boost_no_extern_template { + +extern template void f(T); + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_long_long.ipp b/test/boost_no_long_long.ipp new file mode 100644 index 00000000..52ee3edc --- /dev/null +++ b/test/boost_no_long_long.ipp @@ -0,0 +1,36 @@ +// (C) Copyright John Maddock 2001. +// 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_LONG_LONG +// TITLE: C++0x long long unavailable +// DESCRIPTION: The platform does not support C++0x long long. + +#include + + +namespace boost_no_long_long{ + +int test() +{ +#ifdef __GNUC__ + __extension__ long long lli = 0LL; + __extension__ unsigned long long ulli = 0uLL; +#else + long long lli = 0LL; + unsigned long long ulli = 0uLL; +#endif + (void)&lli; + (void)&ulli; + return 0; +} + +} + + + + + diff --git a/test/boost_no_rvalue_references.ipp b/test/boost_no_rvalue_references.ipp new file mode 100644 index 00000000..4540bb64 --- /dev/null +++ b/test/boost_no_rvalue_references.ipp @@ -0,0 +1,26 @@ +// Copyright (C) 2007 Douglas Gregor +// 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_RVALUE_REFERENCES +// TITLE: C++0x rvalue references unavailable +// DESCRIPTION: The compiler does not support C++0x rvalue references + +namespace boost_no_rvalue_references { + +void g(int&) {} + +template +void forward(F f, T&& t) { f(static_cast(t)); } + +int test() +{ + int x; + forward(g, x); + return 0; +} + +} diff --git a/test/boost_no_scoped_enums.ipp b/test/boost_no_scoped_enums.ipp new file mode 100644 index 00000000..1396da18 --- /dev/null +++ b/test/boost_no_scoped_enums.ipp @@ -0,0 +1,21 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_SCOPED_ENUMS +// TITLE: C++0x scoped enum unavailable +// DESCRIPTION: The compiler does not support C++0x scoped enum + +namespace boost_no_scoped_enums { + +int test() +{ + enum class scoped_enum { yes, no, maybe }; + return 0; +} + +} diff --git a/test/boost_no_static_assert.ipp b/test/boost_no_static_assert.ipp new file mode 100644 index 00000000..858d91bc --- /dev/null +++ b/test/boost_no_static_assert.ipp @@ -0,0 +1,20 @@ +// Copyright (C) 2007 Douglas Gregor +// 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_STATIC_ASSERT +// TITLE: C++0x static_assert unavailable +// DESCRIPTION: The compiler does not support C++0x static assertions + +namespace boost_no_static_assert { + +int test() +{ + static_assert(true, "OK"); + return 0; +} + +} diff --git a/test/boost_no_unicode_literals.ipp b/test/boost_no_unicode_literals.ipp new file mode 100644 index 00000000..247daf49 --- /dev/null +++ b/test/boost_no_unicode_literals.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2008 + +// 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_UNICODE_LITERALS +// TITLE: C++0x unicode literals unavailable +// DESCRIPTION: The compiler does not support C++0x unicode literals + +namespace boost_no_unicode_literals { + +int test() +{ + const char* u8 = u8""; + const char16_t* u16 = u""; + const char32_t* u32 = U""; + return 0; +} + +} diff --git a/test/boost_no_variadic_templates.ipp b/test/boost_no_variadic_templates.ipp new file mode 100644 index 00000000..68af2d71 --- /dev/null +++ b/test/boost_no_variadic_templates.ipp @@ -0,0 +1,21 @@ +// Copyright (C) 2007 Douglas Gregor +// 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_VARIADIC_TEMPLATES +// TITLE: C++0x variadic templates unavailable +// DESCRIPTION: The compiler does not support C++0x variadic templates + +namespace boost_no_variadic_templates { + +template struct tuple {}; + +int test() +{ + return 0; +} + +} diff --git a/test/no_char16_t_fail.cpp b/test/no_char16_t_fail.cpp new file mode 100644 index 00000000..38e1bb5c --- /dev/null +++ b/test/no_char16_t_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_CHAR16_T +// This file should not compile, if it does then +// BOOST_NO_CHAR16_T should not be defined. +// See file boost_no_char16_t.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_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_char16_t::test(); +} + diff --git a/test/no_char16_t_pass.cpp b/test/no_char16_t_pass.cpp new file mode 100644 index 00000000..45df2c8d --- /dev/null +++ b/test/no_char16_t_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_CHAR16_T +// This file should compile, if it does not then +// BOOST_NO_CHAR16_T should be defined. +// See file boost_no_char16_t.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_CHAR16_T +#include "boost_no_char16_t.ipp" +#else +namespace boost_no_char16_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_char16_t::test(); +} + diff --git a/test/no_char32_t_fail.cpp b/test/no_char32_t_fail.cpp new file mode 100644 index 00000000..53124a4d --- /dev/null +++ b/test/no_char32_t_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_CHAR32_T +// This file should not compile, if it does then +// BOOST_NO_CHAR32_T should not be defined. +// See file boost_no_char32_t.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_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_char32_t::test(); +} + diff --git a/test/no_char32_t_pass.cpp b/test/no_char32_t_pass.cpp new file mode 100644 index 00000000..0abc220b --- /dev/null +++ b/test/no_char32_t_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_CHAR32_T +// This file should compile, if it does not then +// BOOST_NO_CHAR32_T should be defined. +// See file boost_no_char32_t.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_CHAR32_T +#include "boost_no_char32_t.ipp" +#else +namespace boost_no_char32_t = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_char32_t::test(); +} + diff --git a/test/no_decltype_fail.cpp b/test/no_decltype_fail.cpp new file mode 100644 index 00000000..ab060488 --- /dev/null +++ b/test/no_decltype_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_DECLTYPE +// This file should not compile, if it does then +// BOOST_NO_DECLTYPE should not be defined. +// See file boost_no_decltype.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_DECLTYPE +#include "boost_no_decltype.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype::test(); +} + diff --git a/test/no_decltype_pass.cpp b/test/no_decltype_pass.cpp new file mode 100644 index 00000000..a115419b --- /dev/null +++ b/test/no_decltype_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_DECLTYPE +// This file should compile, if it does not then +// BOOST_NO_DECLTYPE should be defined. +// See file boost_no_decltype.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_DECLTYPE +#include "boost_no_decltype.ipp" +#else +namespace boost_no_decltype = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_decltype::test(); +} + diff --git a/test/no_extern_template_fail.cpp b/test/no_extern_template_fail.cpp new file mode 100644 index 00000000..6e739c87 --- /dev/null +++ b/test/no_extern_template_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_EXTERN_TEMPLATE +// This file should not compile, if it does then +// BOOST_NO_EXTERN_TEMPLATE should not be defined. +// See file boost_no_extern_template.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_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_extern_template::test(); +} + diff --git a/test/no_extern_template_pass.cpp b/test/no_extern_template_pass.cpp new file mode 100644 index 00000000..60631a28 --- /dev/null +++ b/test/no_extern_template_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_EXTERN_TEMPLATE +// This file should compile, if it does not then +// BOOST_NO_EXTERN_TEMPLATE should be defined. +// See file boost_no_extern_template.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_EXTERN_TEMPLATE +#include "boost_no_extern_template.ipp" +#else +namespace boost_no_extern_template = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_extern_template::test(); +} + diff --git a/test/no_long_long_fail.cpp b/test/no_long_long_fail.cpp new file mode 100644 index 00000000..2a2e724f --- /dev/null +++ b/test/no_long_long_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_LONG_LONG +// This file should not compile, if it does then +// BOOST_NO_LONG_LONG should not be defined. +// See file boost_no_long_long.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_LONG_LONG +#include "boost_no_long_long.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long::test(); +} + diff --git a/test/no_long_long_pass.cpp b/test/no_long_long_pass.cpp new file mode 100644 index 00000000..3e00f1b3 --- /dev/null +++ b/test/no_long_long_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_LONG_LONG +// This file should compile, if it does not then +// BOOST_NO_LONG_LONG should be defined. +// See file boost_no_long_long.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_LONG_LONG +#include "boost_no_long_long.ipp" +#else +namespace boost_no_long_long = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_long_long::test(); +} + diff --git a/test/no_rvalue_references_fail.cpp b/test/no_rvalue_references_fail.cpp new file mode 100644 index 00000000..157c7efa --- /dev/null +++ b/test/no_rvalue_references_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_RVALUE_REFERENCES +// This file should not compile, if it does then +// BOOST_NO_RVALUE_REFERENCES should not be defined. +// See file boost_no_rvalue_references.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_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_rvalue_references::test(); +} + diff --git a/test/no_rvalue_references_pass.cpp b/test/no_rvalue_references_pass.cpp new file mode 100644 index 00000000..1349ec81 --- /dev/null +++ b/test/no_rvalue_references_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_RVALUE_REFERENCES +// This file should compile, if it does not then +// BOOST_NO_RVALUE_REFERENCES should be defined. +// See file boost_no_rvalue_references.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_RVALUE_REFERENCES +#include "boost_no_rvalue_references.ipp" +#else +namespace boost_no_rvalue_references = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_rvalue_references::test(); +} + diff --git a/test/no_scoped_enums_fail.cpp b/test/no_scoped_enums_fail.cpp new file mode 100644 index 00000000..1da2360c --- /dev/null +++ b/test/no_scoped_enums_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 08:00:48 2008 +// 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_SCOPED_ENUMS +// This file should not compile, if it does then +// BOOST_NO_SCOPED_ENUMS should not be defined. +// See file boost_no_scoped_enums.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_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_scoped_enums::test(); +} + diff --git a/test/no_scoped_enums_pass.cpp b/test/no_scoped_enums_pass.cpp new file mode 100644 index 00000000..b462340d --- /dev/null +++ b/test/no_scoped_enums_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 08:00:48 2008 +// 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_SCOPED_ENUMS +// This file should compile, if it does not then +// BOOST_NO_SCOPED_ENUMS should be defined. +// See file boost_no_scoped_enums.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_SCOPED_ENUMS +#include "boost_no_scoped_enums.ipp" +#else +namespace boost_no_scoped_enums = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_scoped_enums::test(); +} + diff --git a/test/no_static_assert_fail.cpp b/test/no_static_assert_fail.cpp new file mode 100644 index 00000000..ba053413 --- /dev/null +++ b/test/no_static_assert_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_STATIC_ASSERT +// This file should not compile, if it does then +// BOOST_NO_STATIC_ASSERT should not be defined. +// See file boost_no_static_assert.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_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_static_assert::test(); +} + diff --git a/test/no_static_assert_pass.cpp b/test/no_static_assert_pass.cpp new file mode 100644 index 00000000..9df618a1 --- /dev/null +++ b/test/no_static_assert_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_STATIC_ASSERT +// This file should compile, if it does not then +// BOOST_NO_STATIC_ASSERT should be defined. +// See file boost_no_static_assert.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_STATIC_ASSERT +#include "boost_no_static_assert.ipp" +#else +namespace boost_no_static_assert = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_static_assert::test(); +} + diff --git a/test/no_unicode_literals_fail.cpp b/test/no_unicode_literals_fail.cpp new file mode 100644 index 00000000..0a1d32de --- /dev/null +++ b/test/no_unicode_literals_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_UNICODE_LITERALS +// This file should not compile, if it does then +// BOOST_NO_UNICODE_LITERALS should not be defined. +// See file boost_no_unicode_literals.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_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_unicode_literals::test(); +} + diff --git a/test/no_unicode_literals_pass.cpp b/test/no_unicode_literals_pass.cpp new file mode 100644 index 00000000..cca64a16 --- /dev/null +++ b/test/no_unicode_literals_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 09:24:04 2008 +// 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_UNICODE_LITERALS +// This file should compile, if it does not then +// BOOST_NO_UNICODE_LITERALS should be defined. +// See file boost_no_unicode_literals.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_UNICODE_LITERALS +#include "boost_no_unicode_literals.ipp" +#else +namespace boost_no_unicode_literals = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_unicode_literals::test(); +} + diff --git a/test/no_variadic_templates_fail.cpp b/test/no_variadic_templates_fail.cpp new file mode 100644 index 00000000..25f4eaf1 --- /dev/null +++ b/test/no_variadic_templates_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_VARIADIC_TEMPLATES +// This file should not compile, if it does then +// BOOST_NO_VARIADIC_TEMPLATES should not be defined. +// See file boost_no_variadic_templates.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_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_templates::test(); +} + diff --git a/test/no_variadic_templates_pass.cpp b/test/no_variadic_templates_pass.cpp new file mode 100644 index 00000000..9f57e151 --- /dev/null +++ b/test/no_variadic_templates_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 29 07:24:54 2008 +// 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_VARIADIC_TEMPLATES +// This file should compile, if it does not then +// BOOST_NO_VARIADIC_TEMPLATES should be defined. +// See file boost_no_variadic_templates.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_VARIADIC_TEMPLATES +#include "boost_no_variadic_templates.ipp" +#else +namespace boost_no_variadic_templates = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_templates::test(); +} + From 642f99f28d45fee00e3929e706bf794f50c207ee Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 1 Mar 2009 14:14:09 +0000 Subject: [PATCH 047/435] config: fix both BOOST_HAS_LONG_LONG and BOOST_NO_LONG_LONG getting defined at the same time for some compilers [SVN r51503] --- include/boost/config/suffix.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 142e8e00..ca803306 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -31,11 +31,13 @@ // remember that since these just declare a bunch of macros, there should be // no namespace issues from this. // -#if !defined(BOOST_HAS_LONG_LONG) \ +#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \ && !defined(BOOST_MSVC) && !defined(__BORLANDC__) # include # if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX)) # define BOOST_HAS_LONG_LONG +# else +# define BOOST_NO_LONG_LONG # endif #endif From be4e73bece512bce0af6584a85e04cdbdff59460 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 1 Mar 2009 17:09:15 +0000 Subject: [PATCH 048/435] Try and reconcile new C++0x macros with the old ones. [SVN r51513] --- include/boost/config/compiler/borland.hpp | 61 ++++++++++------------ include/boost/config/compiler/codegear.hpp | 19 ++++++- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index c0280601..02d35fe8 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -138,24 +138,42 @@ #if (__BORLANDC__ >= 0x599) # pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax #endif - -#if defined( BOOST_CODEGEAR_0X_SUPPORT ) -# #if __BORLANDC__ >= 0x610 +// +// C++0x Macros: +// +#if defined( BOOST_CODEGEAR_0X_SUPPORT ) && (__BORLANDC__ >= 0x610) # define BOOST_HAS_ALIGNOF # define BOOST_HAS_CHAR16_T # define BOOST_HAS_CHAR32_T # define BOOST_HAS_DECLTYPE -//# define BOOST_HAS_DEFAULTED_FN -//# define BOOST_HAS_DELETED_FN # define BOOST_HAS_EXPLICIT_CONVERSION_OPS -//# define BOOST_HAS_NULLPTR -//# define BOOST_HAS_RAW_STRING # define BOOST_HAS_REF_QUALIFIER # define BOOST_HAS_RVALUE_REFS -//# define BOOST_HAS_SCOPED_ENUM # define BOOST_HAS_STATIC_ASSERT -//# define BOOST_HAS_VARIADIC_TMPL -# #endif //__BORLANDC__ >= 0x610 + +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported +#else +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DECLTYPE +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS #endif #define BOOST_NO_INITIALIZER_LISTS @@ -213,29 +231,6 @@ #ifndef __STRICT_ANSI__ # define BOOST_HAS_DECLSPEC #endif - -// -// C++0x features -// -// See above for BOOST_NO_LONG_LONG - -#if __BORLANDC__ < 0x0610 -# define BOOST_NO_CHAR16_T -# define BOOST_NO_CHAR32_T -# define BOOST_NO_DECLTYPE -# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_RVALUE_REFERENCES -# define BOOST_NO_VARIADIC_TEMPLATES -#endif - -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported // // ABI fixing headers: // diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index ae57d76a..026ea7d1 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -59,11 +59,12 @@ #endif - +// +// C++0x macros: +// # define BOOST_HAS_CHAR16_T # define BOOST_HAS_CHAR32_T # define BOOST_HAS_LONG_LONG - //# define BOOST_HAS_ALIGNOF # define BOOST_HAS_DECLTYPE # define BOOST_HAS_EXPLICIT_CONVERSION_OPS @@ -72,6 +73,20 @@ //# define BOOST_HAS_STATIC_ASSERT # define BOOST_HAS_STD_TYPE_TRAITS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS + +// +// TR1 macros: +// # define BOOST_HAS_TR1_HASH # define BOOST_HAS_TR1_TYPE_TRAITS # define BOOST_HAS_TR1_UNORDERED_MAP From 1945035983319f65551d4c6fe52db513c3e66f9a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 3 Mar 2009 10:06:46 +0000 Subject: [PATCH 049/435] Added EVC++ 9 and 10 as recognised compilers. [SVN r51553] --- include/boost/config/compiler/visualc.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 7da5ee3d..ac361229 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -184,6 +184,10 @@ # define BOOST_COMPILER_VERSION evc4.0 # elif _MSC_VER == 1400 # define BOOST_COMPILER_VERSION evc8 +# elif _MSC_VER == 1500 +# define BOOST_COMPILER_VERSION evc9 +# elif _MSC_VER == 1600 +# define BOOST_COMPILER_VERSION evc10 # else # if defined(BOOST_ASSERT_CONFIG) # error "Unknown EVC++ compiler version - please run the configure tests and report the results" From 903786bc48d4886fe6c367df10fe0fe3dd5e90d9 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 5 Mar 2009 09:51:29 +0000 Subject: [PATCH 050/435] Two more Borland defects added. [SVN r51619] --- include/boost/config/compiler/borland.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 02d35fe8..d5bd7c51 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -129,6 +129,8 @@ # define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_USING_TEMPLATE # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +# define BOOST_NO_NESTED_FRIENDSHIP +# define BOOST_NO_TYPENAME_WITH_CTOR #endif // From e8678c03e4c551dafa63495b0c817ccb910035fc Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Thu, 12 Mar 2009 14:48:49 +0000 Subject: [PATCH 051/435] Added configuration macros BOOST_NO_AUTO_DECLARATIONS and BOOST_NO_AUTO_MULTIDECLARATIONS. [SVN r51733] --- doc/macro_reference.qbk | 6 +++ include/boost/config/compiler/borland.hpp | 42 ++++++++++--------- include/boost/config/compiler/codegear.hpp | 18 ++++---- include/boost/config/compiler/common_edg.hpp | 28 +++++++------ include/boost/config/compiler/digitalmars.hpp | 28 +++++++------ include/boost/config/compiler/gcc.hpp | 29 +++++++------ include/boost/config/compiler/hp_acc.hpp | 28 +++++++------ include/boost/config/compiler/intel.hpp | 28 +++++++------ include/boost/config/compiler/metrowerks.hpp | 26 ++++++------ include/boost/config/compiler/mpw.hpp | 28 +++++++------ include/boost/config/compiler/pgi.hpp | 28 +++++++------ include/boost/config/compiler/sgi_mipspro.hpp | 28 +++++++------ include/boost/config/compiler/sunpro_cc.hpp | 28 +++++++------ include/boost/config/compiler/vacpp.hpp | 28 +++++++------ include/boost/config/compiler/visualc.hpp | 34 ++++++++------- test/all/Jamfile.v2 | 8 +++- test/boost_no_auto_declarations.ipp | 25 +++++++++++ test/boost_no_auto_multidecl.ipp | 25 +++++++++++ test/config_info.cpp | 3 ++ test/config_test.cpp | 22 +++++++++- 20 files changed, 303 insertions(+), 187 deletions(-) create mode 100644 test/boost_no_auto_declarations.ipp create mode 100644 test/boost_no_auto_multidecl.ipp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 17dcf597..9ef6402f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -524,6 +524,12 @@ that are not yet supported by a particular compiler. [table [[Macro ][Description ]] +[[`BOOST_NO_AUTO_DECLARATIONS`][The compiler does not support +type deduction for variables declared with the `auto` keyword (`auto var = ...;`). +]] +[[`BOOST_NO_AUTO_MULTIDECLARATIONS`][The compiler does not support +type deduction for multiple variables declared with the `auto` keyword (`auto var = ..., *ptr = ...;`). +]] [[`BOOST_NO_CHAR16_T`][The compiler does not support type `char16_t`. ]] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index d5bd7c51..25676989 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -153,29 +153,31 @@ # define BOOST_HAS_RVALUE_REFS # define BOOST_HAS_STATIC_ASSERT -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS # define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported #else -# define BOOST_NO_CHAR16_T -# define BOOST_NO_CHAR32_T -# define BOOST_NO_DECLTYPE -# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DECLTYPE +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS #endif #define BOOST_NO_INITIALIZER_LISTS diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 026ea7d1..afd764d2 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -73,16 +73,16 @@ //# define BOOST_HAS_STATIC_ASSERT # define BOOST_HAS_STD_TYPE_TRAITS -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS // // TR1 macros: diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 8d31e332..3e62bb0f 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -64,20 +64,22 @@ // // See above for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #ifdef c_plusplus // EDG has "long long" in non-strict mode // However, some libraries have insufficient "long long" support diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 43fa2352..5984312b 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -59,20 +59,22 @@ // // C++0x features // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #if __DMC__ < 0x800 #error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 671fa229..439153ce 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -105,16 +105,18 @@ // C++0x features // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_UNICODE_LITERALS +// See below for BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are @@ -124,13 +126,14 @@ # define BOOST_HAS_RVALUE_REFS # define BOOST_HAS_STATIC_ASSERT #else -# define BOOST_NO_DECLTYPE -# define BOOST_NO_RVALUE_REFERENCES -# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_DECLTYPE +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_STATIC_ASSERT #endif #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) # define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_AUTO_DECLARATIONS #endif // Variadic templates compiler: diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index fe8bcdd9..0c3cc9af 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -90,20 +90,22 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // last known and checked version for HP-UX/ia64 is 61300 diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index b7b918c1..e4d1b07d 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -162,20 +162,22 @@ template<> struct assert_intrinsic_wchar_t {}; // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // last known and checked version: diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index a3464fd9..5f6e0fe5 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -91,19 +91,21 @@ #else # define BOOST_NO_RVALUE_REFERENCES #endif -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index b3eeb5cf..1d724065 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -41,20 +41,22 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // versions check: diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index ec007162..ce09e2aa 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -33,20 +33,22 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // version check: diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp index b237f85b..f6a86ad5 100644 --- a/include/boost/config/compiler/sgi_mipspro.hpp +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -28,20 +28,22 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // version check: diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index f650ece9..6553a465 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -86,20 +86,22 @@ # define BOOST_NO_LONG_LONG #endif -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // Version diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 3d0be10b..eb75cdbf 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -61,20 +61,22 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index ac361229..26b7234f 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -146,21 +146,27 @@ // C++0x features // // See above for BOOST_NO_LONG_LONG +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + +// MSVC 2010 has some support for C++0x +#if _MSC_VER < 1600 +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +#endif // _MSC_VER < 1600 -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES // // prefix and suffix headers: // diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 69e7eb69..65b2af93 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 Fri Feb 20 21:15:18 2009 +# This file was automatically generated on Thu Mar 12 17:32:05 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -184,6 +184,12 @@ test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" : test-suite "BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS" : [ run ../no_array_type_spec_pass.cpp ] [ compile-fail ../no_array_type_spec_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_DECLARATIONS" : +[ run ../no_auto_declarations_pass.cpp ] +[ compile-fail ../no_auto_declarations_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_MULTIDECLARATIONS" : +[ run ../no_auto_multidecl_pass.cpp ] +[ compile-fail ../no_auto_multidecl_fail.cpp ] ; test-suite "BOOST_NO_AUTO_PTR" : [ run ../no_auto_ptr_pass.cpp ] [ compile-fail ../no_auto_ptr_fail.cpp ] ; diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp new file mode 100644 index 00000000..be48ed3e --- /dev/null +++ b/test/boost_no_auto_declarations.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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_AUTO_DECLARATIONS +// TITLE: C++0x auto declarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of variables with automatically deduced type + +namespace boost_no_auto_declarations { + +void check(int& x) +{ +} + +int test() +{ + auto x = 10; + check(x); + return 0; +} + +} diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp new file mode 100644 index 00000000..976d445a --- /dev/null +++ b/test/boost_no_auto_multidecl.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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_AUTO_MULTIDECLARATIONS +// TITLE: C++0x auto multideclarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of series of variables with automatically deduced type + +namespace boost_no_auto_multideclarations { + +void check(int& x, int*& y) +{ +} + +int test() +{ + auto x = 10, *y = &x; + check(x, y); + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 1b75f8cf..1c9fcdc6 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -955,6 +955,8 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_ADL_BARRIER); PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS); + PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS); PRINT_MACRO(BOOST_NO_AUTO_PTR); PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); @@ -1034,6 +1036,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); 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 f9677e03..1c3e055f 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Feb 20 21:15:18 2009 +// This file was automatically generated on Thu Mar 12 17:32:05 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -37,6 +37,16 @@ namespace boost_no_argument_dependent_lookup = empty_boost; #else namespace boost_no_array_type_specializations = empty_boost; #endif +#ifndef BOOST_NO_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +namespace boost_no_auto_declarations = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +namespace boost_no_auto_multideclarations = empty_boost; +#endif #ifndef BOOST_NO_AUTO_PTR #include "boost_no_auto_ptr.ipp" #else @@ -971,6 +981,16 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_auto_declarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_DECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_auto_multideclarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_MULTIDECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_auto_ptr::test()) { std::cerr << "Failed test for BOOST_NO_AUTO_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; From 9830ab865bf3bb3a4e4364de2561ee0446d8aa44 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 16 Mar 2009 15:49:17 +0000 Subject: [PATCH 052/435] Revert 51733 - it broke the regression testing system [SVN r51794] --- doc/macro_reference.qbk | 6 ------ test/all/Jamfile.v2 | 8 +------- test/boost_no_auto_declarations.ipp | 25 ------------------------- test/boost_no_auto_multidecl.ipp | 25 ------------------------- test/config_info.cpp | 3 --- test/config_test.cpp | 22 +--------------------- 6 files changed, 2 insertions(+), 87 deletions(-) delete mode 100644 test/boost_no_auto_declarations.ipp delete mode 100644 test/boost_no_auto_multidecl.ipp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 9ef6402f..17dcf597 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -524,12 +524,6 @@ that are not yet supported by a particular compiler. [table [[Macro ][Description ]] -[[`BOOST_NO_AUTO_DECLARATIONS`][The compiler does not support -type deduction for variables declared with the `auto` keyword (`auto var = ...;`). -]] -[[`BOOST_NO_AUTO_MULTIDECLARATIONS`][The compiler does not support -type deduction for multiple variables declared with the `auto` keyword (`auto var = ..., *ptr = ...;`). -]] [[`BOOST_NO_CHAR16_T`][The compiler does not support type `char16_t`. ]] diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 65b2af93..69e7eb69 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 Thu Mar 12 17:32:05 2009 +# This file was automatically generated on Fri Feb 20 21:15:18 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -184,12 +184,6 @@ test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" : test-suite "BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS" : [ run ../no_array_type_spec_pass.cpp ] [ compile-fail ../no_array_type_spec_fail.cpp ] ; -test-suite "BOOST_NO_AUTO_DECLARATIONS" : -[ run ../no_auto_declarations_pass.cpp ] -[ compile-fail ../no_auto_declarations_fail.cpp ] ; -test-suite "BOOST_NO_AUTO_MULTIDECLARATIONS" : -[ run ../no_auto_multidecl_pass.cpp ] -[ compile-fail ../no_auto_multidecl_fail.cpp ] ; test-suite "BOOST_NO_AUTO_PTR" : [ run ../no_auto_ptr_pass.cpp ] [ compile-fail ../no_auto_ptr_fail.cpp ] ; diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp deleted file mode 100644 index be48ed3e..00000000 --- a/test/boost_no_auto_declarations.ipp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2009 Andrey Semashev -// 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_AUTO_DECLARATIONS -// TITLE: C++0x auto declarators unavailable -// DESCRIPTION: The compiler does not support C++0x declarations of variables with automatically deduced type - -namespace boost_no_auto_declarations { - -void check(int& x) -{ -} - -int test() -{ - auto x = 10; - check(x); - return 0; -} - -} diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp deleted file mode 100644 index 976d445a..00000000 --- a/test/boost_no_auto_multidecl.ipp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2009 Andrey Semashev -// 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_AUTO_MULTIDECLARATIONS -// TITLE: C++0x auto multideclarators unavailable -// DESCRIPTION: The compiler does not support C++0x declarations of series of variables with automatically deduced type - -namespace boost_no_auto_multideclarations { - -void check(int& x, int*& y) -{ -} - -int test() -{ - auto x = 10, *y = &x; - check(x, y); - return 0; -} - -} diff --git a/test/config_info.cpp b/test/config_info.cpp index 1c9fcdc6..1b75f8cf 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -955,8 +955,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_ADL_BARRIER); PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); - PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS); - PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS); PRINT_MACRO(BOOST_NO_AUTO_PTR); PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); @@ -1036,7 +1034,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); 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 1c3e055f..f9677e03 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Thu Mar 12 17:32:05 2009 +// This file was automatically generated on Fri Feb 20 21:15:18 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -37,16 +37,6 @@ namespace boost_no_argument_dependent_lookup = empty_boost; #else namespace boost_no_array_type_specializations = empty_boost; #endif -#ifndef BOOST_NO_AUTO_DECLARATIONS -#include "boost_no_auto_declarations.ipp" -#else -namespace boost_no_auto_declarations = empty_boost; -#endif -#ifndef BOOST_NO_AUTO_MULTIDECLARATIONS -#include "boost_no_auto_multidecl.ipp" -#else -namespace boost_no_auto_multideclarations = empty_boost; -#endif #ifndef BOOST_NO_AUTO_PTR #include "boost_no_auto_ptr.ipp" #else @@ -981,16 +971,6 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_auto_declarations::test()) - { - std::cerr << "Failed test for BOOST_NO_AUTO_DECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_no_auto_multideclarations::test()) - { - std::cerr << "Failed test for BOOST_NO_AUTO_MULTIDECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_no_auto_ptr::test()) { std::cerr << "Failed test for BOOST_NO_AUTO_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; From c5410e83d027c68a91acebfcc52e2b8eb225e4f9 Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Sat, 21 Mar 2009 12:39:47 +0000 Subject: [PATCH 053/435] Added configuration macros BOOST_NO_AUTO_DECLARATIONS and BOOST_NO_AUTO_MULTIDECLARATIONS (take two). The C++0x features were disabled for MSVC 2010 as it is too far from release now. The macros are also defined for Borland and Codegear as these features are not announced in the release notes. [SVN r51880] --- include/boost/config/compiler/borland.hpp | 4 +- include/boost/config/compiler/codegear.hpp | 62 +++++++++++----------- include/boost/config/compiler/visualc.hpp | 14 ++--- test/all/Jamfile.v2 | 8 ++- test/boost_no_auto_declarations.ipp | 25 +++++++++ test/boost_no_auto_multidecl.ipp | 25 +++++++++ test/config_info.cpp | 3 ++ test/config_test.cpp | 22 +++++++- test/no_auto_declarations_fail.cpp | 37 +++++++++++++ test/no_auto_declarations_pass.cpp | 37 +++++++++++++ test/no_auto_multidecl_fail.cpp | 37 +++++++++++++ test/no_auto_multidecl_pass.cpp | 37 +++++++++++++ 12 files changed, 270 insertions(+), 41 deletions(-) create mode 100644 test/boost_no_auto_declarations.ipp create mode 100644 test/boost_no_auto_multidecl.ipp create mode 100644 test/no_auto_declarations_fail.cpp create mode 100644 test/no_auto_declarations_pass.cpp create mode 100644 test/no_auto_multidecl_fail.cpp create mode 100644 test/no_auto_multidecl_pass.cpp diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 25676989..a253e95d 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -176,10 +176,10 @@ # define BOOST_NO_DELETED_FUNCTIONS # define BOOST_NO_RAW_LITERALS # define BOOST_NO_UNICODE_LITERALS -# define BOOST_NO_AUTO_DECLARATIONS -# define BOOST_NO_AUTO_MULTIDECLARATIONS #endif +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_INITIALIZER_LISTS #if __BORLANDC__ >= 0x590 diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index afd764d2..803d17a0 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -62,44 +62,46 @@ // // C++0x macros: // -# define BOOST_HAS_CHAR16_T -# define BOOST_HAS_CHAR32_T -# define BOOST_HAS_LONG_LONG -//# define BOOST_HAS_ALIGNOF -# define BOOST_HAS_DECLTYPE -# define BOOST_HAS_EXPLICIT_CONVERSION_OPS -//# define BOOST_HAS_RVALUE_REFS -# define BOOST_HAS_SCOPED_ENUM -//# define BOOST_HAS_STATIC_ASSERT -# define BOOST_HAS_STD_TYPE_TRAITS +#define BOOST_HAS_CHAR16_T +#define BOOST_HAS_CHAR32_T +#define BOOST_HAS_LONG_LONG +// #define BOOST_HAS_ALIGNOF +#define BOOST_HAS_DECLTYPE +#define BOOST_HAS_EXPLICIT_CONVERSION_OPS +// #define BOOST_HAS_RVALUE_REFS +#define BOOST_HAS_SCOPED_ENUM +// #define BOOST_HAS_STATIC_ASSERT +#define BOOST_HAS_STD_TYPE_TRAITS -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_RVALUE_REFERENCES -# define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS // // TR1 macros: // -# define BOOST_HAS_TR1_HASH -# define BOOST_HAS_TR1_TYPE_TRAITS -# define BOOST_HAS_TR1_UNORDERED_MAP -# define BOOST_HAS_TR1_UNORDERED_SET +#define BOOST_HAS_TR1_HASH +#define BOOST_HAS_TR1_TYPE_TRAITS +#define BOOST_HAS_TR1_UNORDERED_MAP +#define BOOST_HAS_TR1_UNORDERED_SET -# define BOOST_HAS_MACRO_USE_FACET +#define BOOST_HAS_MACRO_USE_FACET -# define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_INITIALIZER_LISTS - // On non-Win32 platforms let the platform config figure this out: -# ifdef _WIN32 -# define BOOST_HAS_STDINT_H -# endif +// On non-Win32 platforms let the platform config figure this out: +#ifdef _WIN32 +# define BOOST_HAS_STDINT_H +#endif // // __int64: diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 26b7234f..552e5bb1 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -159,13 +159,13 @@ #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -// MSVC 2010 has some support for C++0x -#if _MSC_VER < 1600 -# define BOOST_NO_RVALUE_REFERENCES -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_AUTO_DECLARATIONS -# define BOOST_NO_AUTO_MULTIDECLARATIONS -#endif // _MSC_VER < 1600 +// MSVC 2010 CTP has some support for C++0x, but we still disable it until the compiler release +// #if _MSC_VER < 1600 +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS +// #endif // _MSC_VER < 1600 // // prefix and suffix headers: diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 69e7eb69..41477cae 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 Fri Feb 20 21:15:18 2009 +# This file was automatically generated on Sat Mar 21 15:13:32 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -184,6 +184,12 @@ test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" : test-suite "BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS" : [ run ../no_array_type_spec_pass.cpp ] [ compile-fail ../no_array_type_spec_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_DECLARATIONS" : +[ run ../no_auto_declarations_pass.cpp ] +[ compile-fail ../no_auto_declarations_fail.cpp ] ; +test-suite "BOOST_NO_AUTO_MULTIDECLARATIONS" : +[ run ../no_auto_multidecl_pass.cpp ] +[ compile-fail ../no_auto_multidecl_fail.cpp ] ; test-suite "BOOST_NO_AUTO_PTR" : [ run ../no_auto_ptr_pass.cpp ] [ compile-fail ../no_auto_ptr_fail.cpp ] ; diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp new file mode 100644 index 00000000..be48ed3e --- /dev/null +++ b/test/boost_no_auto_declarations.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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_AUTO_DECLARATIONS +// TITLE: C++0x auto declarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of variables with automatically deduced type + +namespace boost_no_auto_declarations { + +void check(int& x) +{ +} + +int test() +{ + auto x = 10; + check(x); + return 0; +} + +} diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp new file mode 100644 index 00000000..976d445a --- /dev/null +++ b/test/boost_no_auto_multidecl.ipp @@ -0,0 +1,25 @@ +// Copyright (C) 2009 Andrey Semashev +// 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_AUTO_MULTIDECLARATIONS +// TITLE: C++0x auto multideclarators unavailable +// DESCRIPTION: The compiler does not support C++0x declarations of series of variables with automatically deduced type + +namespace boost_no_auto_multideclarations { + +void check(int& x, int*& y) +{ +} + +int test() +{ + auto x = 10, *y = &x; + check(x, y); + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 1b75f8cf..1c9fcdc6 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -955,6 +955,8 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_ADL_BARRIER); PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); + PRINT_MACRO(BOOST_NO_AUTO_DECLARATIONS); + PRINT_MACRO(BOOST_NO_AUTO_MULTIDECLARATIONS); PRINT_MACRO(BOOST_NO_AUTO_PTR); PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); @@ -1034,6 +1036,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); 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 f9677e03..da884d7c 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Feb 20 21:15:18 2009 +// This file was automatically generated on Sat Mar 21 15:13:32 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -37,6 +37,16 @@ namespace boost_no_argument_dependent_lookup = empty_boost; #else namespace boost_no_array_type_specializations = empty_boost; #endif +#ifndef BOOST_NO_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +namespace boost_no_auto_declarations = empty_boost; +#endif +#ifndef BOOST_NO_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +namespace boost_no_auto_multideclarations = empty_boost; +#endif #ifndef BOOST_NO_AUTO_PTR #include "boost_no_auto_ptr.ipp" #else @@ -971,6 +981,16 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_auto_declarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_DECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_auto_multideclarations::test()) + { + std::cerr << "Failed test for BOOST_NO_AUTO_MULTIDECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_auto_ptr::test()) { std::cerr << "Failed test for BOOST_NO_AUTO_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_auto_declarations_fail.cpp b/test/no_auto_declarations_fail.cpp new file mode 100644 index 00000000..a8ba1e64 --- /dev/null +++ b/test/no_auto_declarations_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// 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_AUTO_DECLARATIONS +// This file should not compile, if it does then +// BOOST_NO_AUTO_DECLARATIONS should not be defined. +// See file boost_no_auto_declarations.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_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_declarations::test(); +} + diff --git a/test/no_auto_declarations_pass.cpp b/test/no_auto_declarations_pass.cpp new file mode 100644 index 00000000..2b479013 --- /dev/null +++ b/test/no_auto_declarations_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// 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_AUTO_DECLARATIONS +// This file should compile, if it does not then +// BOOST_NO_AUTO_DECLARATIONS should be defined. +// See file boost_no_auto_declarations.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_AUTO_DECLARATIONS +#include "boost_no_auto_declarations.ipp" +#else +namespace boost_no_auto_declarations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_declarations::test(); +} + diff --git a/test/no_auto_multidecl_fail.cpp b/test/no_auto_multidecl_fail.cpp new file mode 100644 index 00000000..3d028b40 --- /dev/null +++ b/test/no_auto_multidecl_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// 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_AUTO_MULTIDECLARATIONS +// This file should not compile, if it does then +// BOOST_NO_AUTO_MULTIDECLARATIONS should not be defined. +// See file boost_no_auto_multidecl.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_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_multideclarations::test(); +} + diff --git a/test/no_auto_multidecl_pass.cpp b/test/no_auto_multidecl_pass.cpp new file mode 100644 index 00000000..d845232f --- /dev/null +++ b/test/no_auto_multidecl_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu Mar 12 17:32:04 2009 +// 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_AUTO_MULTIDECLARATIONS +// This file should compile, if it does not then +// BOOST_NO_AUTO_MULTIDECLARATIONS should be defined. +// See file boost_no_auto_multidecl.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_AUTO_MULTIDECLARATIONS +#include "boost_no_auto_multidecl.ipp" +#else +namespace boost_no_auto_multideclarations = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_auto_multideclarations::test(); +} + From 383a8b209424025c1dfa1f370758bd1e9ddb16ea Mon Sep 17 00:00:00 2001 From: Andrey Semashev Date: Thu, 26 Mar 2009 18:19:33 +0000 Subject: [PATCH 054/435] Added configuration macros BOOST_NO_AUTO_DECLARATIONS and BOOST_NO_AUTO_MULTIDECLARATIONS (take two). The C++0x features were disabled for MSVC 2010 as it is too far from release now. The macros are also defined for Borland and Codegear as these features are not announced in the release notes. [SVN r51990] --- doc/macro_reference.qbk | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 17dcf597..9ef6402f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -524,6 +524,12 @@ that are not yet supported by a particular compiler. [table [[Macro ][Description ]] +[[`BOOST_NO_AUTO_DECLARATIONS`][The compiler does not support +type deduction for variables declared with the `auto` keyword (`auto var = ...;`). +]] +[[`BOOST_NO_AUTO_MULTIDECLARATIONS`][The compiler does not support +type deduction for multiple variables declared with the `auto` keyword (`auto var = ..., *ptr = ...;`). +]] [[`BOOST_NO_CHAR16_T`][The compiler does not support type `char16_t`. ]] From 833e50fe8f4cdcffbcef3245303e5040dc9affbd Mon Sep 17 00:00:00 2001 From: David Deakins Date: Wed, 1 Apr 2009 14:42:11 +0000 Subject: [PATCH 055/435] Have config/select_stdlib_config.hpp and config/stdlib/stlport.hpp use instead of to determine which standard library is in use. For std lib implementations that rely on Boost components like TypeTraits, Bind, Function, or SmartPtr, this helps to avoid circular header dependency issues, since is much less likely to pull in Boost libraries than . In get_pointer.hpp, switched to using instead of using directly. As above, this helps avoid circular header dependency issues in Boost-supplemented std libs (specifically it avoids issues when pulls in pieces of Boost.SmartPtr). These two changes were made in response to testing done with STLport 5.2.1 using the _STLP_USE_BOOST_SUPPORT option. [SVN r52104] --- include/boost/config/select_stdlib_config.hpp | 6 +++--- include/boost/config/stdlib/stlport.hpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 13e5e4ce..40a58fc2 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -12,12 +12,12 @@ // locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed: // we need to include a std lib header here in order to detect which -// library is in use, use as it's about the smallest -// of the std lib headers - do not rely on this header being included - +// library is in use, use as it's one of the smaller std lib headers +// - do not rely on this header being included - // users can short-circuit this header if they know whose std lib // they are using. -#include +#include #if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) // STLPort library; this _must_ come first, otherwise since diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 8d0677ea..82e4cff5 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -10,7 +10,7 @@ // STLPort standard library config: #if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) -# include +# include # if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION) # error "This is not STLPort!" # endif From 1271821c44bb8222fc7e327301dd2a20093c2456 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 8 Apr 2009 10:56:22 +0000 Subject: [PATCH 056/435] Include for some versions of gcc's library. Sometimes gcc's doesn't define the C++ macros, so check for it and include in that case. Also remove a workaround from container_fwd.hpp Fixes #2924. [SVN r52246] --- include/boost/config/select_stdlib_config.hpp | 2 +- include/boost/config/stdlib/libstdcpp3.hpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 40a58fc2..71a7a06a 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -33,7 +33,7 @@ // Rogue Wave library: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp" -#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) +#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) || defined(_GLIBCXX_CSTDDEF) // GNU libstdc++ 3 # define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp" diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 8e1c811b..8ac326e8 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -9,6 +9,10 @@ // config for libstdc++ v3 // not much to go in here: +#if !defined(__GLIBCXX__) && !defined(__GLIBCPP__) +#include +#endif + #ifdef __GLIBCXX__ #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__) #else From 3ae6668b44232b1b16b93c8b7f53bac5f11ff81c Mon Sep 17 00:00:00 2001 From: David Deakins Date: Wed, 8 Apr 2009 16:38:38 +0000 Subject: [PATCH 057/435] After including to check for usage of STLport, if STLport is not detected, then include to detect other std libs. This avoids the issue that some std libs do not include all of their C++-related macros when just is included. Related to issue #2924. [SVN r52262] --- include/boost/config/select_stdlib_config.hpp | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 71a7a06a..9c970667 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -11,12 +11,9 @@ // locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed: -// we need to include a std lib header here in order to detect which -// library is in use, use as it's one of the smaller std lib headers -// - do not rely on this header being included - -// users can short-circuit this header if they know whose std lib -// they are using. - +// First include to determine if some version of STLport is in use as the std lib +// (do not rely on this header being included since users can short-circuit this header +// if they know whose std lib they are using.) #include #if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) @@ -25,7 +22,17 @@ // can end up detecting that first rather than STLport: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp" -#elif defined(__LIBCOMO__) +#else + +// If our std lib was not some version of STLport, then include as it is about +// the smallest of the std lib headers that includes real C++ stuff. (Some std libs do not +// include their C++-related macros in so this additional include makes sure +// we get those definitions) +// (again do not rely on this header being included since users can short-circuit this +// header if they know whose std lib they are using.) +#include + +#if defined(__LIBCOMO__) // Comeau STL: #define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp" @@ -64,5 +71,7 @@ #endif +#endif + From ac97540c235ad9b3c450187633568cce4d96e3e2 Mon Sep 17 00:00:00 2001 From: David Deakins Date: Wed, 8 Apr 2009 21:08:00 +0000 Subject: [PATCH 058/435] As of STLport 5.2, unordered_set and unordered_map have been moved from the std:: namespace to the std::tr1:: namespace [SVN r52269] --- include/boost/config/stdlib/stlport.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 82e4cff5..abd93144 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -61,9 +61,14 @@ # endif #endif -#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION < 0x500) +#if defined(_STLPORT_VERSION) && ((_STLPORT_VERSION < 0x500) || (_STLPORT_VERSION >= 0x520)) # define BOOST_NO_STD_UNORDERED #endif + +#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION >= 0x520) +# define BOOST_HAS_TR1_UNORDERED_SET +# define BOOST_HAS_TR1_UNORDERED_MAP +#endif // // Without member template support enabled, their are no template // iterate constructors, and no std::allocator: From 90d2e831a3e729fa3ff2a0582141de2b70068e2d Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 11 Apr 2009 07:53:59 +0000 Subject: [PATCH 059/435] Don't need to include utility now that select_stdlib has been fixed. [SVN r52320] --- include/boost/config/stdlib/libstdcpp3.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 8ac326e8..8e1c811b 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -9,10 +9,6 @@ // config for libstdc++ v3 // not much to go in here: -#if !defined(__GLIBCXX__) && !defined(__GLIBCPP__) -#include -#endif - #ifdef __GLIBCXX__ #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__) #else From f43833227afddbb754b97831046fcaf45a59e6c2 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sat, 11 Apr 2009 08:26:20 +0000 Subject: [PATCH 060/435] Also don't need to check for _GLIBCXX_CSTDDEF. [SVN r52323] --- include/boost/config/select_stdlib_config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 9c970667..2a1430ae 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -40,7 +40,7 @@ // Rogue Wave library: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp" -#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) || defined(_GLIBCXX_CSTDDEF) +#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) // GNU libstdc++ 3 # define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp" From 340a8a3e6591f37e5e6ba4e714354bbf57c7c15d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 12 Apr 2009 15:49:08 +0000 Subject: [PATCH 061/435] Try and set the right linker options on BSD and Sun platforms. [SVN r52353] --- test/Jamfile.v2 | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 59a88359..f4c47af0 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -7,6 +7,22 @@ # If you need to alter build preferences then set them in # the template defined in options_v2.jam. # + +import modules ; + +local is_unix = [ modules.peek : UNIX ] ; + +if $(is_unix) +{ + local osname = [ SHELL uname ] ; + + switch $(osname) + { + case "Sun*" : OTHERFLAGS = "-lpthread" ; + case "*BSD*" : OTHERFLAGS = "-lpthread" ; + } +} + test-suite config : [ run config_test.cpp @@ -23,8 +39,7 @@ test-suite config single msvc:static msvc:static linux:-lpthread linux:-lrt - freebsd:-lpthread - bsd:-lpthread + gcc:$(OTHERFLAGS) ] [ run config_info.cpp : : : always_show_run_output single msvc:static msvc:static ] [ run config_info.cpp : : : always_show_run_output multi : config_info_threaded ] From b130802a6ee0ef79c31bb7351d4fae437abb5a08 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 12 Apr 2009 15:59:12 +0000 Subject: [PATCH 062/435] Change test so we don't get namespace clashes with the real Boost code, updated all/Jamfile.v2 so it actually works now! [SVN r52354] --- test/all/Jamfile.v2 | 4 ++++ test/boost_no_using_breaks_adl.ipp | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 41477cae..e30b5fe2 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -14,6 +14,10 @@ path-constant DOT : . ; include $(DOT)/options_v2.jam ; +project + : requirements + .. ; + run ../config_info.cpp : : : single msvc:static msvc:static ; run ../config_info.cpp : : : multi : config_info_threaded ; run ../math_info.cpp : : : borland:static borland:static ; diff --git a/test/boost_no_using_breaks_adl.ipp b/test/boost_no_using_breaks_adl.ipp index fbf6e411..437d9fdc 100644 --- a/test/boost_no_using_breaks_adl.ipp +++ b/test/boost_no_using_breaks_adl.ipp @@ -13,7 +13,7 @@ // using whatever::symbol;. -namespace boost +namespace boost_ns { template T* get_pointer(T* p) @@ -45,7 +45,7 @@ namespace user_ns // use this as a workaround: //using namespace boost; // this statement breaks ADL: - using boost::get_pointer; // conforming compilers require + using boost_ns::get_pointer; // conforming compilers require // this one to find the auto_ptr // and T* overloads return get_pointer(x) == 0; @@ -59,7 +59,7 @@ int test() int i; typedef void* pv; i = user_ns::f(pv()); - i = user_ns::f(boost::inner2::X()); + i = user_ns::f(boost_ns::inner2::X()); return 0; } From 8c1bad1affcd1580137e8ea496401b334d087d33 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 14 Apr 2009 09:03:13 +0000 Subject: [PATCH 063/435] Fix variadic template detection for mainline gcc. Fixes #2943 [SVN r52381] --- include/boost/config/compiler/gcc.hpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 439153ce..62bf45e6 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -125,10 +125,19 @@ # define BOOST_HAS_DECLTYPE # define BOOST_HAS_RVALUE_REFS # define BOOST_HAS_STATIC_ASSERT +# define BOOST_HAS_VARIADIC_TMPL #else # define BOOST_NO_DECLTYPE # define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_STATIC_ASSERT + +// Variadic templates compiler: +// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html +# ifdef __VARIADIC_TEMPLATES +# define BOOST_HAS_VARIADIC_TMPL +# else +# define BOOST_NO_VARIADIC_TEMPLATES +# endif #endif #if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) @@ -136,14 +145,6 @@ # define BOOST_NO_AUTO_DECLARATIONS #endif -// Variadic templates compiler: -// http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html -#ifdef __VARIADIC_TEMPLATES -# define BOOST_HAS_VARIADIC_TMPL -#else -# define BOOST_NO_VARIADIC_TEMPLATES -#endif - // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ From 5d7d4d94f5aa10d765014ac9183f9c22e0d698cb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 20 Apr 2009 11:27:04 +0000 Subject: [PATCH 064/435] Added support for vxworks.hpp. Fixes #2959. [SVN r52504] --- include/boost/config/platform/vxworks.hpp | 31 +++++++++++++++++++ .../boost/config/select_platform_config.hpp | 4 +++ 2 files changed, 35 insertions(+) create mode 100644 include/boost/config/platform/vxworks.hpp diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp new file mode 100644 index 00000000..6ec5171e --- /dev/null +++ b/include/boost/config/platform/vxworks.hpp @@ -0,0 +1,31 @@ +// (C) Copyright Dustin Spicuzza 2009. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// vxWorks specific config options: + +#define BOOST_PLATFORM "vxWorks" + +#define BOOST_NO_CWCHAR +#define BOOST_NO_INTRINSIC_WCHAR_T + +#if defined(__GNUC__) && defined(__STRICT_ANSI__) +#define BOOST_NO_INT64_T +#endif + +#define BOOST_HAS_UNISTD_H + +// these allow posix_features to work, since vxWorks doesn't +// define them itself +#define _POSIX_TIMERS 1 +#define _POSIX_THREADS 1 + +// vxworks doesn't work with asio serial ports +#define BOOST_ASIO_DISABLE_SERIAL_PORT + +// boilerplate code: +#include + diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index 4ce2c015..615bb064 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -61,6 +61,10 @@ // QNX: # define BOOST_PLATFORM_CONFIG "boost/config/platform/qnxnto.hpp" +#elif defined(__VXWORKS__) +// vxWorks: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/vxworks.hpp" + #else # if defined(unix) \ From 8bbfd9629a385ace17ef1d83a13095947941220f Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 29 Apr 2009 21:19:40 +0000 Subject: [PATCH 065/435] Remove unused copy of boostbook.css [SVN r52667] --- doc/html/boostbook.css | 582 ----------------------------------------- 1 file changed, 582 deletions(-) delete mode 100755 doc/html/boostbook.css diff --git a/doc/html/boostbook.css b/doc/html/boostbook.css deleted file mode 100755 index e5d7bb50..00000000 --- a/doc/html/boostbook.css +++ /dev/null @@ -1,582 +0,0 @@ -/*============================================================================= - Copyright (c) 2004 Joel de Guzman - http://spirit.sourceforge.net/ - - Use, modification and distribution is 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) -=============================================================================*/ - -/*============================================================================= - Body defaults -=============================================================================*/ - - body - { - margin: 1em; - font-family: sans-serif; - } - -/*============================================================================= - Paragraphs -=============================================================================*/ - - p - { - text-align: left; - font-size: 10pt; - line-height: 1.15; - } - -/*============================================================================= - Program listings -=============================================================================*/ - - /* Code on paragraphs */ - p tt.computeroutput - { - font-size: 10pt; - } - - pre.synopsis - { - font-size: 10pt; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - .programlisting, - .screen - { - font-size: 10pt; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - /* Program listings in tables don't get borders */ - td .programlisting, - td .screen - { - margin: 0pc 0pc 0pc 0pc; - padding: 0pc 0pc 0pc 0pc; - } - -/*============================================================================= - Headings -=============================================================================*/ - - h1, h2, h3, h4, h5, h6 - { - text-align: left; - margin: 1em 0em 0.5em 0em; - font-weight: bold; - } - - h1 { font: 140% } - h2 { font: bold 140% } - h3 { font: bold 130% } - h4 { font: bold 120% } - h5 { font: italic 110% } - h6 { font: italic 100% } - - /* Top page titles */ - title, - h1.title, - h2.title - h3.title, - h4.title, - h5.title, - h6.title, - .refentrytitle - { - font-weight: bold; - margin-bottom: 1pc; - } - - h1.title { font-size: 140% } - h2.title { font-size: 140% } - h3.title { font-size: 130% } - h4.title { font-size: 120% } - h5.title { font-size: 110% } - h6.title { font-size: 100% } - - .section h1 - { - margin: 0em 0em 0.5em 0em; - font-size: 140%; - } - - .section h2 { font-size: 140% } - .section h3 { font-size: 130% } - .section h4 { font-size: 120% } - .section h5 { font-size: 110% } - .section h6 { font-size: 100% } - - /* Code on titles */ - h1 tt.computeroutput { font-size: 140% } - h2 tt.computeroutput { font-size: 140% } - h3 tt.computeroutput { font-size: 130% } - h4 tt.computeroutput { font-size: 120% } - h5 tt.computeroutput { font-size: 110% } - h6 tt.computeroutput { font-size: 100% } - -/*============================================================================= - Author -=============================================================================*/ - - h3.author - { - font-size: 100% - } - -/*============================================================================= - Lists -=============================================================================*/ - - li - { - font-size: 10pt; - line-height: 1.3; - } - - /* Unordered lists */ - ul - { - text-align: left; - } - - /* Ordered lists */ - ol - { - text-align: left; - } - -/*============================================================================= - Links -=============================================================================*/ - - a - { - text-decoration: none; /* no underline */ - } - - a:hover - { - text-decoration: underline; - } - -/*============================================================================= - Spirit style navigation -=============================================================================*/ - - .spirit-nav - { - text-align: right; - } - - .spirit-nav a - { - color: white; - padding-left: 0.5em; - } - - .spirit-nav img - { - border-width: 0px; - } - -/*============================================================================= - Table of contents -=============================================================================*/ - - .toc - { - margin: 1pc 4% 0pc 4%; - padding: 0.1pc 1pc 0.1pc 1pc; - font-size: 10pt; - line-height: 1.15; - } - - .toc-main - { - text-align: center; - margin: 3pc 16% 3pc 16%; - padding: 3pc 1pc 3pc 1pc; - line-height: 0.1; - } - - .boost-toc - { - float: right; - padding: 0.5pc; - } - -/*============================================================================= - Tables -=============================================================================*/ - - .table-title, - div.table p.title - { - margin-left: 4%; - padding-right: 0.5em; - padding-left: 0.5em; - } - - .informaltable table, - .table table - { - width: 92%; - margin-left: 4%; - margin-right: 4%; - } - - div.informaltable table, - div.table table - { - padding: 4px; - } - - /* Table Cells */ - div.informaltable table tr td, - div.table table tr td - { - padding: 0.5em; - text-align: left; - } - - div.informaltable table tr th, - div.table table tr th - { - padding: 0.5em 0.5em 0.5em 0.5em; - border: 1pt solid white; - font-size: 120%; - } - -/*============================================================================= - Blurbs -=============================================================================*/ - - div.note, - div.tip, - div.important, - div.caution, - div.warning, - div.sidebar - { - font-size: 10pt; - line-height: 1.2; - display: block; - margin: 1pc 4% 0pc 4%; - padding: 0.5pc 0.5pc 0.5pc 0.5pc; - } - - div.sidebar img - { - padding: 1pt; - } - - - -/*============================================================================= - Callouts -=============================================================================*/ - .line_callout_bug img - { - float: left; - position:relative; - left: 4px; - top: -12px; - clear: left; - margin-left:-22px; - } - - .callout_bug img - { - } - - - -/*============================================================================= - Variable Lists -=============================================================================*/ - - /* Make the terms in definition lists bold */ - div.variablelist dl dt, - span.term - { - font-weight: bold; - font-size: 10pt; - } - - div.variablelist table tbody tr td - { - text-align: left; - vertical-align: top; - padding: 0em 2em 0em 0em; - font-size: 10pt; - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - - /* Make the terms in definition lists bold */ - div.variablelist dl dt - { - margin-bottom: 0.2em; - } - - div.variablelist dl dd - { - margin: 0em 0em 0.5em 2em; - font-size: 10pt; - } - - div.variablelist table tbody tr td p - div.variablelist dl dd p - { - margin: 0em 0em 0.5em 0em; - line-height: 1; - } - -/*============================================================================= - Misc -=============================================================================*/ - - /* Title of books and articles in bibliographies */ - span.title - { - font-style: italic; - } - - span.underline - { - text-decoration: underline; - } - - span.strikethrough - { - text-decoration: line-through; - } - - /* Copyright, Legal Notice */ - div div.legalnotice p - { - text-align: left - } - -/*============================================================================= - Colors -=============================================================================*/ - - @media screen - { - /* Links */ - a - { - color: #0C7445; - } - - a:visited - { - color: #663974; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a, - h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover, - h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited - { - text-decoration: none; /* no underline */ - color: #000000; - } - - /* Syntax Highlighting */ - .keyword { color: #0000AA; } - .identifier { color: #000000; } - .special { color: #707070; } - .preprocessor { color: #402080; } - .char { color: teal; } - .comment { color: #800000; } - .string { color: teal; } - .number { color: teal; } - .white_bkd { background-color: #E8FBE9; } - .dk_grey_bkd { background-color: #A0DAAC; } - - /* Copyright, Legal Notice */ - .copyright - { - color: #666666; - font-size: small; - } - - div div.legalnotice p - { - color: #666666; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - .programlisting, - .screen - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Blurbs */ - div.note, - div.tip, - div.important, - div.caution, - div.warning, - div.sidebar - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - /* Table of contents */ - .toc - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - /* Table of contents */ - .toc-main - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid #DCDCDC; - background-color: #FAFFFB; - } - - div.informaltable table tr th, - div.table table tr th - { - background-color: #E3F9E4; - border: 1px solid #DCDCDC; - } - - /* Misc */ - span.highlight - { - color: #00A000; - } - } - - @media print - { - /* Links */ - a - { - color: black; - } - - a:visited - { - color: black; - } - - .spirit-nav - { - display: none; - } - - /* Program listing */ - pre.synopsis - { - border: 1px solid gray; - background-color: #FAFFFB; - } - - .programlisting, - .screen - { - border: 1px solid gray; - background-color: #FAFFFB; - } - - td .programlisting, - td .screen - { - border: 0px solid #DCDCDC; - } - - /* Table of contents */ - .toc - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - /* Table of contents */ - .toc-main - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - background-color: #FAFFFB; - } - - .informaltable table, - .table table - { - border: 1px solid #DCDCDC; - border-bottom: 3px solid #9D9D9D; - border-right: 3px solid #9D9D9D; - border-collapse: collapse; - background-color: #FAFFFB; - } - - /* Tables */ - div.informaltable table tr td, - div.table table tr td - { - border: 1px solid #DCDCDC; - background-color: #FAFFFB; - } - - div.informaltable table tr th, - div.table table tr th - { - border: 1px solid #DCDCDC; - background-color: #FAFFFB; - } - - /* Misc */ - span.highlight - { - font-weight: bold; - } - } From 57de4bc62a4a9c072d4995c0e0c2c0e0be564520 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 2 May 2009 12:25:14 +0000 Subject: [PATCH 066/435] Add __GXX_EXPERIMENTAL_CXX0X__ [SVN r52725] --- test/config_info.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 1c9fcdc6..80faff53 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -157,6 +157,7 @@ void print_compiler_macros() PRINT_MACRO(__STDC_VERSION__); PRINT_MACRO(__GNUG__); PRINT_MACRO(__STRICT_ANSI__); + PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__); PRINT_MACRO(__VERSION__); PRINT_MACRO(__OPTIMIZE__); PRINT_MACRO(__CHAR_UNSIGNED__); From 83dfbd9ec5e40697ca8bdedcfacf3387743efcbd Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 11 May 2009 00:59:37 +0000 Subject: [PATCH 067/435] Prep for 1.40.0 [SVN r52887] --- 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 8269beb2..49cfe766 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 103900 +#define BOOST_VERSION 104000 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_39" +#define BOOST_LIB_VERSION "1_40" #endif From 82f0426fa5b176f82dcea269d2c3b53510c1a6ee Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Mon, 11 May 2009 14:11:27 +0000 Subject: [PATCH 068/435] Add support for GCC 4.4.0's C++0x features [SVN r52903] --- .../boost_config/boost_macro_reference.html | 32 +++++++++++++++++++ include/boost/config/compiler/gcc.hpp | 27 ++++++++-------- test/all/Jamfile.v2 | 6 +--- test/config_info.cpp | 1 + test/config_test.cpp | 2 +- 5 files changed, 49 insertions(+), 19 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 56da61f0..2a0df275 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -2233,6 +2233,38 @@ + +

+ BOOST_NO_AUTO_DECLARATIONS +

+ + +

+ The compiler does not support type deduction for variables declared + with the auto keyword + (auto var + = ...;). +

+ + + + +

+ BOOST_NO_AUTO_MULTIDECLARATIONS +

+ + +

+ The compiler does not support type deduction for multiple variables + declared with the auto + keyword (auto var + = ..., + *ptr + = ...;). +

+ + +

BOOST_NO_CHAR16_T diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 62bf45e6..db525759 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -101,23 +101,15 @@ # endif #endif +// C++0x features not implemented in any GCC version // -// C++0x features -// - -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_RAW_LITERALS -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_UNICODE_LITERALS -// See below for BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS +// C++0x features in 4.3.n and later +// #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are // passed on the command line, which in turn defines @@ -140,9 +132,18 @@ # endif #endif -#if !defined(__GXX_EXPERIMENTAL_CXX0X__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) -# define BOOST_NO_INITIALIZER_LISTS +// C++0x features in 4.4.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_UNICODE_LITERALS #endif // ConceptGCC compiler: diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index e30b5fe2..f6dbe925 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 Sat Mar 21 15:13:32 2009 +# This file was automatically generated on Mon May 11 07:24:23 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -14,10 +14,6 @@ path-constant DOT : . ; include $(DOT)/options_v2.jam ; -project - : requirements - .. ; - run ../config_info.cpp : : : single msvc:static msvc:static ; run ../config_info.cpp : : : multi : config_info_threaded ; run ../math_info.cpp : : : borland:static borland:static ; diff --git a/test/config_info.cpp b/test/config_info.cpp index 80faff53..87b6b8ad 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1038,6 +1038,7 @@ void print_boost_macros() 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 da884d7c..7d485070 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Mar 21 15:13:32 2009 +// This file was automatically generated on Mon May 11 07:24:23 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the From 8c5aee782ec125a741140621ddb549a0ed898be1 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 15 May 2009 17:08:26 +0000 Subject: [PATCH 069/435] Add C++0x feature detection and header detection macros [SVN r53031] --- .../boost_config/boost_macro_reference.html | 325 +++++++++++++++++- doc/html/index.html | 4 +- doc/macro_reference.qbk | 34 +- include/boost/config/compiler/borland.hpp | 47 ++- include/boost/config/compiler/codegear.hpp | 18 +- include/boost/config/compiler/common_edg.hpp | 19 +- include/boost/config/compiler/digitalmars.hpp | 11 +- include/boost/config/compiler/gcc.hpp | 5 + include/boost/config/compiler/hp_acc.hpp | 12 +- include/boost/config/compiler/intel.hpp | 22 -- include/boost/config/compiler/kai.hpp | 2 - include/boost/config/compiler/metrowerks.hpp | 10 +- include/boost/config/compiler/mpw.hpp | 10 +- include/boost/config/compiler/pgi.hpp | 10 +- include/boost/config/compiler/sgi_mipspro.hpp | 23 -- include/boost/config/compiler/sunpro_cc.hpp | 10 +- include/boost/config/compiler/vacpp.hpp | 8 +- include/boost/config/compiler/visualc.hpp | 13 +- include/boost/config/stdlib/dinkumware.hpp | 30 +- include/boost/config/stdlib/libcomo.hpp | 27 +- include/boost/config/stdlib/libstdcpp3.hpp | 36 +- include/boost/config/stdlib/modena.hpp | 27 +- include/boost/config/stdlib/msl.hpp | 28 +- include/boost/config/stdlib/roguewave.hpp | 26 +- include/boost/config/stdlib/sgi.hpp | 26 +- include/boost/config/stdlib/stlport.hpp | 25 ++ include/boost/config/stdlib/vacpp.hpp | 26 +- test/all/Jamfile.v2 | 77 ++++- test/boost_no_0x_hdr_array.ipp | 22 ++ test/boost_no_0x_hdr_chrono.ipp | 22 ++ test/boost_no_0x_hdr_codecvt.ipp | 22 ++ test/boost_no_0x_hdr_concepts.ipp | 22 ++ test/boost_no_0x_hdr_condition_variable.ipp | 22 ++ test/boost_no_0x_hdr_container_concepts.ipp | 22 ++ test/boost_no_0x_hdr_forward_list.ipp | 22 ++ test/boost_no_0x_hdr_future.ipp | 22 ++ test/boost_no_0x_hdr_initializer_list.ipp | 22 ++ test/boost_no_0x_hdr_iterator_concepts.ipp | 22 ++ test/boost_no_0x_hdr_memory_concepts.ipp | 22 ++ test/boost_no_0x_hdr_mutex.ipp | 22 ++ test/boost_no_0x_hdr_random.ipp | 22 ++ test/boost_no_0x_hdr_ratio.ipp | 22 ++ test/boost_no_0x_hdr_regex.ipp | 22 ++ test/boost_no_0x_hdr_system_error.ipp | 22 ++ test/boost_no_0x_hdr_thread.ipp | 22 ++ test/boost_no_0x_hdr_tuple.ipp | 22 ++ test/boost_no_0x_hdr_type_traits.ipp | 22 ++ test/boost_no_0x_hdr_unordered_map.ipp | 22 ++ test/boost_no_0x_hdr_unordered_set.ipp | 22 ++ test/boost_no_concepts.ipp | 22 ++ test/boost_no_lambdas.ipp | 23 ++ test/boost_no_nullptr.ipp | 21 ++ test/boost_no_template_aliases.ipp | 22 ++ test/config_info.cpp | 32 ++ test/config_test.cpp | 252 +++++++++++++- test/no_0x_hdr_array_fail.cpp | 37 ++ test/no_0x_hdr_array_pass.cpp | 37 ++ test/no_0x_hdr_chrono_fail.cpp | 37 ++ test/no_0x_hdr_chrono_pass.cpp | 37 ++ test/no_0x_hdr_codecvt_fail.cpp | 37 ++ test/no_0x_hdr_codecvt_pass.cpp | 37 ++ test/no_0x_hdr_concepts_fail.cpp | 37 ++ test/no_0x_hdr_concepts_pass.cpp | 37 ++ test/no_0x_hdr_condition_variable_fail.cpp | 37 ++ test/no_0x_hdr_condition_variable_pass.cpp | 37 ++ test/no_0x_hdr_container_concepts_fail.cpp | 37 ++ test/no_0x_hdr_container_concepts_pass.cpp | 37 ++ test/no_0x_hdr_forward_list_fail.cpp | 37 ++ test/no_0x_hdr_forward_list_pass.cpp | 37 ++ test/no_0x_hdr_future_fail.cpp | 37 ++ test/no_0x_hdr_future_pass.cpp | 37 ++ test/no_0x_hdr_initializer_list_fail.cpp | 37 ++ test/no_0x_hdr_initializer_list_pass.cpp | 37 ++ test/no_0x_hdr_iterator_concepts_fail.cpp | 37 ++ test/no_0x_hdr_iterator_concepts_pass.cpp | 37 ++ test/no_0x_hdr_memory_concepts_fail.cpp | 37 ++ test/no_0x_hdr_memory_concepts_pass.cpp | 37 ++ test/no_0x_hdr_mutex_fail.cpp | 37 ++ test/no_0x_hdr_mutex_pass.cpp | 37 ++ test/no_0x_hdr_random_fail.cpp | 37 ++ test/no_0x_hdr_random_pass.cpp | 37 ++ test/no_0x_hdr_ratio_fail.cpp | 37 ++ test/no_0x_hdr_ratio_pass.cpp | 37 ++ test/no_0x_hdr_regex_fail.cpp | 37 ++ test/no_0x_hdr_regex_pass.cpp | 37 ++ test/no_0x_hdr_system_error_fail.cpp | 37 ++ test/no_0x_hdr_system_error_pass.cpp | 37 ++ test/no_0x_hdr_thread_fail.cpp | 37 ++ test/no_0x_hdr_thread_pass.cpp | 37 ++ test/no_0x_hdr_tuple_fail.cpp | 37 ++ test/no_0x_hdr_tuple_pass.cpp | 37 ++ test/no_0x_hdr_type_traits_fail.cpp | 37 ++ test/no_0x_hdr_type_traits_pass.cpp | 37 ++ test/no_0x_hdr_unordered_map_fail.cpp | 37 ++ test/no_0x_hdr_unordered_map_pass.cpp | 37 ++ test/no_0x_hdr_unordered_set_fail.cpp | 37 ++ test/no_0x_hdr_unordered_set_pass.cpp | 37 ++ test/no_concepts_fail.cpp | 37 ++ test/no_concepts_pass.cpp | 37 ++ test/no_lambdas_fail.cpp | 37 ++ test/no_lambdas_pass.cpp | 37 ++ test/no_nullptr_fail.cpp | 37 ++ test/no_nullptr_pass.cpp | 37 ++ test/no_template_aliases_fail.cpp | 37 ++ test/no_template_aliases_pass.cpp | 37 ++ 105 files changed, 3454 insertions(+), 141 deletions(-) create mode 100644 test/boost_no_0x_hdr_array.ipp create mode 100644 test/boost_no_0x_hdr_chrono.ipp create mode 100644 test/boost_no_0x_hdr_codecvt.ipp create mode 100644 test/boost_no_0x_hdr_concepts.ipp create mode 100644 test/boost_no_0x_hdr_condition_variable.ipp create mode 100644 test/boost_no_0x_hdr_container_concepts.ipp create mode 100644 test/boost_no_0x_hdr_forward_list.ipp create mode 100644 test/boost_no_0x_hdr_future.ipp create mode 100644 test/boost_no_0x_hdr_initializer_list.ipp create mode 100644 test/boost_no_0x_hdr_iterator_concepts.ipp create mode 100644 test/boost_no_0x_hdr_memory_concepts.ipp create mode 100644 test/boost_no_0x_hdr_mutex.ipp create mode 100644 test/boost_no_0x_hdr_random.ipp create mode 100644 test/boost_no_0x_hdr_ratio.ipp create mode 100644 test/boost_no_0x_hdr_regex.ipp create mode 100644 test/boost_no_0x_hdr_system_error.ipp create mode 100644 test/boost_no_0x_hdr_thread.ipp create mode 100644 test/boost_no_0x_hdr_tuple.ipp create mode 100644 test/boost_no_0x_hdr_type_traits.ipp create mode 100644 test/boost_no_0x_hdr_unordered_map.ipp create mode 100644 test/boost_no_0x_hdr_unordered_set.ipp create mode 100644 test/boost_no_concepts.ipp create mode 100644 test/boost_no_lambdas.ipp create mode 100644 test/boost_no_nullptr.ipp create mode 100644 test/boost_no_template_aliases.ipp create mode 100644 test/no_0x_hdr_array_fail.cpp create mode 100644 test/no_0x_hdr_array_pass.cpp create mode 100644 test/no_0x_hdr_chrono_fail.cpp create mode 100644 test/no_0x_hdr_chrono_pass.cpp create mode 100644 test/no_0x_hdr_codecvt_fail.cpp create mode 100644 test/no_0x_hdr_codecvt_pass.cpp create mode 100644 test/no_0x_hdr_concepts_fail.cpp create mode 100644 test/no_0x_hdr_concepts_pass.cpp create mode 100644 test/no_0x_hdr_condition_variable_fail.cpp create mode 100644 test/no_0x_hdr_condition_variable_pass.cpp create mode 100644 test/no_0x_hdr_container_concepts_fail.cpp create mode 100644 test/no_0x_hdr_container_concepts_pass.cpp create mode 100644 test/no_0x_hdr_forward_list_fail.cpp create mode 100644 test/no_0x_hdr_forward_list_pass.cpp create mode 100644 test/no_0x_hdr_future_fail.cpp create mode 100644 test/no_0x_hdr_future_pass.cpp create mode 100644 test/no_0x_hdr_initializer_list_fail.cpp create mode 100644 test/no_0x_hdr_initializer_list_pass.cpp create mode 100644 test/no_0x_hdr_iterator_concepts_fail.cpp create mode 100644 test/no_0x_hdr_iterator_concepts_pass.cpp create mode 100644 test/no_0x_hdr_memory_concepts_fail.cpp create mode 100644 test/no_0x_hdr_memory_concepts_pass.cpp create mode 100644 test/no_0x_hdr_mutex_fail.cpp create mode 100644 test/no_0x_hdr_mutex_pass.cpp create mode 100644 test/no_0x_hdr_random_fail.cpp create mode 100644 test/no_0x_hdr_random_pass.cpp create mode 100644 test/no_0x_hdr_ratio_fail.cpp create mode 100644 test/no_0x_hdr_ratio_pass.cpp create mode 100644 test/no_0x_hdr_regex_fail.cpp create mode 100644 test/no_0x_hdr_regex_pass.cpp create mode 100644 test/no_0x_hdr_system_error_fail.cpp create mode 100644 test/no_0x_hdr_system_error_pass.cpp create mode 100644 test/no_0x_hdr_thread_fail.cpp create mode 100644 test/no_0x_hdr_thread_pass.cpp create mode 100644 test/no_0x_hdr_tuple_fail.cpp create mode 100644 test/no_0x_hdr_tuple_pass.cpp create mode 100644 test/no_0x_hdr_type_traits_fail.cpp create mode 100644 test/no_0x_hdr_type_traits_pass.cpp create mode 100644 test/no_0x_hdr_unordered_map_fail.cpp create mode 100644 test/no_0x_hdr_unordered_map_pass.cpp create mode 100644 test/no_0x_hdr_unordered_set_fail.cpp create mode 100644 test/no_0x_hdr_unordered_set_pass.cpp create mode 100644 test/no_concepts_fail.cpp create mode 100644 test/no_concepts_pass.cpp create mode 100644 test/no_lambdas_fail.cpp create mode 100644 test/no_lambdas_pass.cpp create mode 100644 test/no_nullptr_fail.cpp create mode 100644 test/no_nullptr_pass.cpp create mode 100644 test/no_template_aliases_fail.cpp create mode 100644 test/no_template_aliases_pass.cpp diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 2a0df275..fed7bdac 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -20,7 +20,8 @@


-PrevUpHomeNext + +PrevUpHomeNext

@@ -2212,7 +2213,7 @@

The following macros describe features in the upcoming ISO C++ standard, - C++0x, that are not yet supported by a particular compiler. + C++0x, that are not yet supported by a particular compiler or library.

@@ -2233,6 +2234,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ BOOST_NO_0X_HDR_ARRAY +

+
+

+ The standard library does not provide header <array>. +

+
+

+ BOOST_NO_0X_HDR_CHRONO +

+
+

+ The standard library does not provide header <chrono>. +

+
+

+ BOOST_NO_0X_HDR_CODECVT +

+
+

+ The standard library does not provide header <codecvt>. +

+
+

+ BOOST_NO_0X_HDR_CONCEPTS +

+
+

+ The standard library does not provide header <concepts>. +

+
+

+ BOOST_NO_0X_HDR_CONDITION_VARIABLE +

+
+

+ The standard library does not provide header <condition_variable>. +

+
+

+ BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +

+
+

+ The standard library does not provide header <container_concepts>. +

+
+

+ BOOST_NO_0X_HDR_FORWARD_LIST +

+
+

+ The standard library does not provide header <forward_list>. +

+
+

+ BOOST_NO_0X_HDR_FUTURE +

+
+

+ The standard library does not provide header <future>. +

+
+

+ BOOST_NO_0X_HDR_INITIALIZER_LIST +

+
+

+ The standard library does not provide header <initializer_list>. +

+
+

+ BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +

+
+

+ The standard library does not provide header <iterator_concepts>. +

+
+

+ BOOST_NO_0X_HDR_MEMORY_CONCEPTS +

+
+

+ The standard library does not provide header <memory_concepts>. +

+
+

+ BOOST_NO_0X_HDR_MUTEX +

+
+

+ The standard library does not provide header <mutex>. +

+
+

+ BOOST_NO_0X_HDR_RANDOM +

+
+

+ The standard library does not provide header <random>. +

+
+

+ BOOST_NO_0X_HDR_RATIO +

+
+

+ The standard library does not provide header <ratio>. +

+
+

+ BOOST_NO_0X_HDR_REGEX +

+
+

+ The standard library does not provide header <regex>. +

+
+

+ BOOST_NO_0X_HDR_SYSTEM_ERROR +

+
+

+ The standard library does not provide header <system_error>. +

+
+

+ + BOOST_NO_0X_HDR_THREAD +

+
+

+ The standard library does not provide header <thread>. +

+
+

+ BOOST_NO_0X_HDR_TUPLE +

+
+

+ The standard library does not provide header <tuple>. +

+
+

+ BOOST_NO_0X_HDR_TYPE_TRAITS +

+
+

+ The standard library does not provide header <type_traits>. +

+
+

+ BOOST_NO_0X_HDR_UNORDERED_MAP +

+
+

+ The standard library does not provide header <unordered_map>. +

+
+

+ BOOST_NO_0X_HDR_UNORDERED_SET +

+
+

+ The standard library does not provide header <unordered_set>. +

+

BOOST_NO_AUTO_DECLARATIONS @@ -2289,6 +2543,30 @@

+

+ BOOST_NO_CONCEPTS +

+
+

+ The compiler does not support Concepts. +

+
+

+ BOOST_NO_TEMPLATE_ALIASES +

+
+

+ The compiler does not support template aliases. +

+

BOOST_NO_CONSTEXPR @@ -2377,6 +2655,18 @@

+

+ BOOST_NO_LAMBDAS +

+
+

+ The compiler does not support Lambdas. +

+

BOOST_NO_LONG_LONG @@ -2390,6 +2680,18 @@

+

+ BOOST_NO_NULLPTR +

+
+

+ The compiler does not support 'nullptr'. +

+

BOOST_NO_RAW_LITERALS @@ -2450,6 +2752,18 @@

+

+ BOOST_NO_TEMPLATE_ALIASES +

+
+

+ The compiler does not support template aliases. +

+

BOOST_NO_UNICODE_LITERALS @@ -3179,7 +3493,8 @@


-PrevUpHomeNext + +PrevUpHomeNext
- + \ No newline at end of file diff --git a/doc/html/index.html b/doc/html/index.html index 10868480..3cc94e38 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: February 21, 2009 at 13:17:03 GMT

Last revised: May 15, 2009 at 15:05:51 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 9ef6402f..8482cd78 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -519,11 +519,33 @@ The compiler supports concepts. [section Macros that describe C++0x features not supported] The following macros describe features in the upcoming ISO C++ standard, C++0x, -that are not yet supported by a particular compiler. +that are not yet supported by a particular compiler or library. [table [[Macro ][Description ]] +[[`BOOST_NO_0X_HDR_ARRAY`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_CHRONO`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_CODECVT`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_CONCEPTS`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_CONDITION_VARIABLE`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_CONTAINER_CONCEPTS`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_FORWARD_LIST`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_FUTURE`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_INITIALIZER_LIST`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_ITERATOR_CONCEPTS`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_MEMORY_CONCEPTS`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_MUTEX`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_RANDOM`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_RATIO`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_REGEX`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_SYSTEM_ERROR`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_THREAD`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_TUPLE`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_TYPE_TRAITS`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_UNORDERED_MAP`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_UNORDERED_SET`][The standard library does not provide header .]] + [[`BOOST_NO_AUTO_DECLARATIONS`][The compiler does not support type deduction for variables declared with the `auto` keyword (`auto var = ...;`). ]] @@ -536,6 +558,10 @@ type `char16_t`. [[`BOOST_NO_CHAR32_T`][The compiler does not support type `char32_t`. ]] +[[`BOOST_NO_CONCEPTS`][The compiler does not support Concepts. +]] +[[`BOOST_NO_TEMPLATE_ALIASES`][The compiler does not support template aliases. +]] [[`BOOST_NO_CONSTEXPR`][The compiler does not support `constexpr`. ]] @@ -557,8 +583,12 @@ explicit instantiation declarations for templates (`explicit template`). [[`BOOST_NO_INITIALIZER_LISTS`][ The C++ compiler does not support C++0x initializer lists. ]] +[[`BOOST_NO_LAMBDAS`][The compiler does not support Lambdas. +]] [[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`. ]] +[[`BOOST_NO_NULLPTR`][The compiler does not support 'nullptr'. +]] [[`BOOST_NO_RAW_LITERALS`][The compiler does not support raw string literals. ]] @@ -574,6 +604,8 @@ scoped enumerations (`enum class`). [[`BOOST_NO_STD_UNORDERD`][The standard library does not support and . ]] +[[`BOOST_NO_TEMPLATE_ALIASES`][The compiler does not support template aliases. +]] [[`BOOST_NO_UNICODE_LITERALS`][The compiler does not support Unicode (`u8`, `u`, `U`) literals. ]] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index a253e95d..16a70687 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -143,7 +143,16 @@ // // C++0x Macros: // -#if defined( BOOST_CODEGEAR_0X_SUPPORT ) && (__BORLANDC__ >= 0x610) +#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610) +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DECLTYPE +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_EXTERN_TEMPLATE +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_STATIC_ASSERT +#else # define BOOST_HAS_ALIGNOF # define BOOST_HAS_CHAR16_T # define BOOST_HAS_CHAR32_T @@ -152,35 +161,23 @@ # define BOOST_HAS_REF_QUALIFIER # define BOOST_HAS_RVALUE_REFS # define BOOST_HAS_STATIC_ASSERT - -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported -#else -# define BOOST_NO_CHAR16_T -# define BOOST_NO_CHAR32_T -# define BOOST_NO_DECLTYPE -# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -# define BOOST_NO_EXTERN_TEMPLATE -# define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_STATIC_ASSERT -# define BOOST_NO_RVALUE_REFERENCES -# define BOOST_NO_VARIADIC_TEMPLATES -# define BOOST_NO_CONSTEXPR -# define BOOST_NO_DEFAULTED_FUNCTIONS -# define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_RAW_LITERALS -# define BOOST_NO_UNICODE_LITERALS #endif #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CONCEPTS +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_TEMPLATE_ALIASES +#define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported +#define BOOST_NO_VARIADIC_TEMPLATES #if __BORLANDC__ >= 0x590 # define BOOST_HAS_TR1_HASH diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 803d17a0..c3293244 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -73,18 +73,22 @@ // #define BOOST_HAS_STATIC_ASSERT #define BOOST_HAS_STD_TYPE_TRAITS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_VARIADIC_TEMPLATES // // TR1 macros: diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 3e62bb0f..75c2f57f 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -43,11 +43,6 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #endif -#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) -// No support for initializer lists -# define BOOST_NO_INITIALIZER_LISTS -#endif - // See also kai.hpp which checks a Kai-specific symbol for EH # if !defined(__KCC) && !defined(__EXCEPTIONS) # define BOOST_NO_EXCEPTIONS @@ -64,22 +59,32 @@ // // See above for BOOST_NO_LONG_LONG // +#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) +// No support for initializer lists +# define BOOST_NO_INITIALIZER_LISTS +#endif + +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS + #ifdef c_plusplus // EDG has "long long" in non-strict mode // However, some libraries have insufficient "long long" support diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 5984312b..3818f1ad 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -26,7 +26,6 @@ #define BOOST_NO_SFINAE #define BOOST_NO_USING_TEMPLATE #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -#define BOOST_NO_INITIALIZER_LISTS #endif // @@ -59,22 +58,28 @@ // // C++0x features // +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS + #if __DMC__ < 0x800 #error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index db525759..34a3419c 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -106,7 +106,10 @@ #define BOOST_NO_CONSTEXPR #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS +#define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later // @@ -151,6 +154,8 @@ #ifdef __GXX_CONCEPTS__ # define BOOST_HAS_CONCEPTS # define BOOST_COMPILER "ConceptGCC version " __VERSION__ +#else +# define BOOST_NO_CONCEPTS #endif #ifndef BOOST_COMPILER diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index 0c3cc9af..a24fc16b 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -90,22 +90,30 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // +#if !defined(__EDG__) + +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS +#endif // // last known and checked version for HP-UX/ia64 is 61300 diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index e4d1b07d..1ab029ed 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -157,28 +157,6 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif -// -// C++0x features -// -// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG -// -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS - // // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1100) diff --git a/include/boost/config/compiler/kai.hpp b/include/boost/config/compiler/kai.hpp index de16f1a6..ea06f9f4 100644 --- a/include/boost/config/compiler/kai.hpp +++ b/include/boost/config/compiler/kai.hpp @@ -21,8 +21,6 @@ # define BOOST_NO_EXCEPTIONS # endif -#define BOOST_COMPILER "Kai C++ version " BOOST_STRINGIZE(__KCC_VERSION) - // // last known and checked version is 4001: #if (__KCC_VERSION > 4001) diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 5f6e0fe5..f32e8ba0 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -42,7 +42,6 @@ # if(__MWERKS__ <= 0x3206) || !defined(BOOST_STRICT_CONFIG) // 9.5 # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_IS_ABSTRACT -# define BOOST_NO_INITIALIZER_LISTS # endif #if !__option(wchar_type) @@ -91,21 +90,26 @@ #else # define BOOST_NO_RVALUE_REFERENCES #endif +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 1d724065..ac536c00 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -33,7 +33,6 @@ # define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */ -# define BOOST_NO_INITIALIZER_LISTS #endif // @@ -41,22 +40,27 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS // // versions check: diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index ce09e2aa..64650cea 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -21,7 +21,6 @@ #define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_SWPRINTF -#define BOOST_NO_INITIALIZER_LISTS #else @@ -33,22 +32,27 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS // // version check: diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp index f6a86ad5..90688314 100644 --- a/include/boost/config/compiler/sgi_mipspro.hpp +++ b/include/boost/config/compiler/sgi_mipspro.hpp @@ -22,29 +22,6 @@ #undef BOOST_NO_SWPRINTF #undef BOOST_DEDUCED_TYPENAME -#define BOOST_NO_INITIALIZER_LISTS -// -// C++0x features -// -// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG -// -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS - // // version check: // probably nothing to do here? diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 6553a465..c4407232 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -74,7 +74,6 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_ADL_BARRIER -#define BOOST_NO_INITIALIZER_LISTS // // C++0x features @@ -86,22 +85,27 @@ # define BOOST_NO_LONG_LONG #endif +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS // // Version diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index eb75cdbf..165408dd 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -61,22 +61,26 @@ // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 552e5bb1..b5fe76cf 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -148,23 +148,28 @@ // See above for BOOST_NO_LONG_LONG #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -// MSVC 2010 CTP has some support for C++0x, but we still disable it until the compiler release +// MSVC 2010 will have some support for C++0x, but we disable it until the beta ships // #if _MSC_VER < 1600 -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_DECLTYPE +#define BOOST_NO_LAMBDAS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_STATIC_ASSERT // #endif // _MSC_VER < 1600 // diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index ff1aed94..3e340c6a 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -78,17 +78,37 @@ # define BOOST_NO_STD_ITERATOR_TRAITS #endif -// -// No std::unordered_* containers yet: -// -#define BOOST_NO_STD_UNORDERED - #if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310) // Intel C++ chokes over any non-trivial use of // this may be an overly restrictive define, but regex fails without it: # define BOOST_NO_STD_LOCALE #endif +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET + #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER #else diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 3114094e..06731e32 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -32,10 +32,31 @@ # define BOOST_HAS_HASH # define BOOST_HAS_SLIST #endif + +// C++0x headers not yet implemented // -// We never have the new C++0x unordered containers: -// -#define BOOST_NO_STD_UNORDERED +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET // // Intrinsic type_traits support. diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 8e1c811b..cfdb9460 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -77,7 +77,39 @@ # endif #endif -#ifndef __GXX_EXPERIMENTAL_CXX0X__ -# define BOOST_NO_STD_UNORDERED +// C++0x headers in 20090124 (GCC 4.3.2) and later +// +#if !defined(__GLIBCXX__) || __GLIBCXX__<20090124 || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET #endif +// C++0x headers in 20090421 (GCC 4.4.0) and later +// +#if !defined(__GLIBCXX__) || __GLIBCXX__<20090421 || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +#endif + +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS + +// --- end --- diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index e488d13a..7bd50cec 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -21,10 +21,31 @@ #ifndef MSIPL_WCHART #define BOOST_NO_STD_WSTRING #endif + +// C++0x headers not yet implemented // -// We never have the new C++0x unordered containers: -// -#define BOOST_NO_STD_UNORDERED +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET #define BOOST_STDLIB "Modena C++ standard library" diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 746878de..6bcd232a 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -45,11 +45,31 @@ # define BOOST_NO_STD_USE_FACET # define BOOST_HAS_TWO_ARG_USE_FACET #endif -// -// We never have the new C++0x unordered containers: -// -#define BOOST_NO_STD_UNORDERED +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET #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 3e588824..cba2f54a 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -152,8 +152,28 @@ # endif #endif +// C++0x headers not yet implemented // -// We never have the new C++0x unordered containers: -// -#define BOOST_NO_STD_UNORDERED +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index b493d49c..c505008b 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -76,7 +76,6 @@ // #define BOOST_HAS_HASH #define BOOST_HAS_SLIST -#define BOOST_NO_STD_UNORDERED // // If this is GNU libstdc++2, then no and no std::wstring: @@ -106,6 +105,31 @@ // #define BOOST_HAS_SGI_TYPE_TRAITS +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET + #define BOOST_STDLIB "SGI standard library" diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index abd93144..3dfd529e 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -200,6 +200,31 @@ namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; namespace boost { using std::min; using std::max; } #endif +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET + #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 c6c45660..c8d6d5ad 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -11,7 +11,31 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES -#define BOOST_NO_STD_UNORDERED + +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_STD_UNORDERED // deprecated; see following +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_UNORDERED_SET #define BOOST_STDLIB "Visual Age default standard library" diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index f6dbe925..cbcc6554 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 11 07:24:23 2009 +# This file was automatically generated on Fri May 15 12:45:15 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -175,6 +175,69 @@ test-suite "BOOST_MSVC_STD_ITERATOR" : test-suite "BOOST_HAS_WINTHREADS" : [ run ../has_winthreads_pass.cpp ] [ compile-fail ../has_winthreads_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_ARRAY" : +[ run ../no_0x_hdr_array_pass.cpp ] +[ compile-fail ../no_0x_hdr_array_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CHRONO" : +[ run ../no_0x_hdr_chrono_pass.cpp ] +[ compile-fail ../no_0x_hdr_chrono_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CODECVT" : +[ run ../no_0x_hdr_codecvt_pass.cpp ] +[ compile-fail ../no_0x_hdr_codecvt_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CONCEPTS" : +[ run ../no_0x_hdr_concepts_pass.cpp ] +[ compile-fail ../no_0x_hdr_concepts_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CONDITION_VARIABLE" : +[ run ../no_0x_hdr_condition_variable_pass.cpp ] +[ compile-fail ../no_0x_hdr_condition_variable_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_CONTAINER_CONCEPTS" : +[ run ../no_0x_hdr_container_concepts_pass.cpp ] +[ compile-fail ../no_0x_hdr_container_concepts_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_FORWARD_LIST" : +[ run ../no_0x_hdr_forward_list_pass.cpp ] +[ compile-fail ../no_0x_hdr_forward_list_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_FUTURE" : +[ run ../no_0x_hdr_future_pass.cpp ] +[ compile-fail ../no_0x_hdr_future_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_INITIALIZER_LIST" : +[ run ../no_0x_hdr_initializer_list_pass.cpp ] +[ compile-fail ../no_0x_hdr_initializer_list_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_ITERATOR_CONCEPTS" : +[ run ../no_0x_hdr_iterator_concepts_pass.cpp ] +[ compile-fail ../no_0x_hdr_iterator_concepts_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_MEMORY_CONCEPTS" : +[ run ../no_0x_hdr_memory_concepts_pass.cpp ] +[ compile-fail ../no_0x_hdr_memory_concepts_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_MUTEX" : +[ run ../no_0x_hdr_mutex_pass.cpp ] +[ compile-fail ../no_0x_hdr_mutex_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_RANDOM" : +[ run ../no_0x_hdr_random_pass.cpp ] +[ compile-fail ../no_0x_hdr_random_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_RATIO" : +[ run ../no_0x_hdr_ratio_pass.cpp ] +[ compile-fail ../no_0x_hdr_ratio_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_REGEX" : +[ run ../no_0x_hdr_regex_pass.cpp ] +[ compile-fail ../no_0x_hdr_regex_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_SYSTEM_ERROR" : +[ run ../no_0x_hdr_system_error_pass.cpp ] +[ compile-fail ../no_0x_hdr_system_error_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_THREAD" : +[ run ../no_0x_hdr_thread_pass.cpp ] +[ compile-fail ../no_0x_hdr_thread_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TUPLE" : +[ run ../no_0x_hdr_tuple_pass.cpp ] +[ compile-fail ../no_0x_hdr_tuple_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TYPE_TRAITS" : +[ run ../no_0x_hdr_type_traits_pass.cpp ] +[ compile-fail ../no_0x_hdr_type_traits_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_UNORDERED_MAP" : +[ run ../no_0x_hdr_unordered_map_pass.cpp ] +[ compile-fail ../no_0x_hdr_unordered_map_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_UNORDERED_SET" : +[ run ../no_0x_hdr_unordered_set_pass.cpp ] +[ compile-fail ../no_0x_hdr_unordered_set_fail.cpp ] ; test-suite "BOOST_NO_ADL_BARRIER" : [ run ../no_adl_barrier_pass.cpp ] [ compile-fail ../no_adl_barrier_fail.cpp ] ; @@ -202,6 +265,9 @@ test-suite "BOOST_NO_CHAR16_T" : test-suite "BOOST_NO_CHAR32_T" : [ run ../no_char32_t_pass.cpp ] [ compile-fail ../no_char32_t_fail.cpp ] ; +test-suite "BOOST_NO_CONCEPTS" : +[ run ../no_concepts_pass.cpp ] +[ compile-fail ../no_concepts_fail.cpp ] ; test-suite "BOOST_NO_CONSTEXPR" : [ run ../no_constexpr_pass.cpp ] [ compile-fail ../no_constexpr_fail.cpp ] ; @@ -283,6 +349,9 @@ test-suite "BOOST_NO_IS_ABSTRACT" : test-suite "BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS" : [ run ../no_iter_construct_pass.cpp ] [ compile-fail ../no_iter_construct_fail.cpp ] ; +test-suite "BOOST_NO_LAMBDAS" : +[ run ../no_lambdas_pass.cpp ] +[ compile-fail ../no_lambdas_fail.cpp ] ; test-suite "BOOST_NO_LIMITS" : [ run ../no_limits_pass.cpp ] [ compile-fail ../no_limits_fail.cpp ] ; @@ -313,6 +382,9 @@ test-suite "BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS" : test-suite "BOOST_NO_NESTED_FRIENDSHIP" : [ run ../no_nested_friendship_pass.cpp ] [ compile-fail ../no_nested_friendship_fail.cpp ] ; +test-suite "BOOST_NO_NULLPTR" : +[ run ../no_nullptr_pass.cpp ] +[ compile-fail ../no_nullptr_fail.cpp ] ; test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" : [ run ../no_ops_in_namespace_pass.cpp ] [ compile-fail ../no_ops_in_namespace_fail.cpp ] ; @@ -397,6 +469,9 @@ test-suite "BOOST_NO_STD_WSTRING" : test-suite "BOOST_NO_SWPRINTF" : [ run ../no_swprintf_pass.cpp ] [ compile-fail ../no_swprintf_fail.cpp ] ; +test-suite "BOOST_NO_TEMPLATE_ALIASES" : +[ run ../no_template_aliases_pass.cpp ] +[ compile-fail ../no_template_aliases_fail.cpp ] ; test-suite "BOOST_NO_TEMPLATED_IOSTREAMS" : [ run ../no_template_streams_pass.cpp ] [ compile-fail ../no_template_streams_fail.cpp ] ; diff --git a/test/boost_no_0x_hdr_array.ipp b/test/boost_no_0x_hdr_array.ipp new file mode 100644 index 00000000..b61414b5 --- /dev/null +++ b/test/boost_no_0x_hdr_array.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_ARRAY +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_array { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_chrono.ipp b/test/boost_no_0x_hdr_chrono.ipp new file mode 100644 index 00000000..0f54f114 --- /dev/null +++ b/test/boost_no_0x_hdr_chrono.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_CHRONO +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_chrono { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_codecvt.ipp b/test/boost_no_0x_hdr_codecvt.ipp new file mode 100644 index 00000000..e42cca6b --- /dev/null +++ b/test/boost_no_0x_hdr_codecvt.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_CODECVT +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_codecvt { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_concepts.ipp b/test/boost_no_0x_hdr_concepts.ipp new file mode 100644 index 00000000..dceda408 --- /dev/null +++ b/test/boost_no_0x_hdr_concepts.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_CONCEPTS +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_concepts { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_condition_variable.ipp b/test/boost_no_0x_hdr_condition_variable.ipp new file mode 100644 index 00000000..585aa2cf --- /dev/null +++ b/test/boost_no_0x_hdr_condition_variable.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_CONDITION_VARIABLE +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_condition_variable { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_container_concepts.ipp b/test/boost_no_0x_hdr_container_concepts.ipp new file mode 100644 index 00000000..af9d5103 --- /dev/null +++ b/test/boost_no_0x_hdr_container_concepts.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_CONTAINER_CONCEPTS +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_container_concepts { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_forward_list.ipp b/test/boost_no_0x_hdr_forward_list.ipp new file mode 100644 index 00000000..45d90fa6 --- /dev/null +++ b/test/boost_no_0x_hdr_forward_list.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_FORWARD_LIST +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_forward_list { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_future.ipp b/test/boost_no_0x_hdr_future.ipp new file mode 100644 index 00000000..528509a8 --- /dev/null +++ b/test/boost_no_0x_hdr_future.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_FUTURE +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_future { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_initializer_list.ipp b/test/boost_no_0x_hdr_initializer_list.ipp new file mode 100644 index 00000000..3e48cf47 --- /dev/null +++ b/test/boost_no_0x_hdr_initializer_list.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_INITIALIZER_LIST +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_initializer_list { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_iterator_concepts.ipp b/test/boost_no_0x_hdr_iterator_concepts.ipp new file mode 100644 index 00000000..f0637333 --- /dev/null +++ b/test/boost_no_0x_hdr_iterator_concepts.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_ITERATOR_CONCEPTS +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_iterator_concepts { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_memory_concepts.ipp b/test/boost_no_0x_hdr_memory_concepts.ipp new file mode 100644 index 00000000..fec1d7b0 --- /dev/null +++ b/test/boost_no_0x_hdr_memory_concepts.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_MEMORY_CONCEPTS +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_memory_concepts { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_mutex.ipp b/test/boost_no_0x_hdr_mutex.ipp new file mode 100644 index 00000000..c1e7ec9c --- /dev/null +++ b/test/boost_no_0x_hdr_mutex.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_MUTEX +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_mutex { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_random.ipp b/test/boost_no_0x_hdr_random.ipp new file mode 100644 index 00000000..956f24e2 --- /dev/null +++ b/test/boost_no_0x_hdr_random.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_RANDOM +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_random { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_ratio.ipp b/test/boost_no_0x_hdr_ratio.ipp new file mode 100644 index 00000000..8200b41a --- /dev/null +++ b/test/boost_no_0x_hdr_ratio.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_RATIO +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_ratio { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_regex.ipp b/test/boost_no_0x_hdr_regex.ipp new file mode 100644 index 00000000..1b40caf1 --- /dev/null +++ b/test/boost_no_0x_hdr_regex.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_REGEX +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_regex { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_system_error.ipp b/test/boost_no_0x_hdr_system_error.ipp new file mode 100644 index 00000000..a69912f3 --- /dev/null +++ b/test/boost_no_0x_hdr_system_error.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_SYSTEM_ERROR +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_system_error { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_thread.ipp b/test/boost_no_0x_hdr_thread.ipp new file mode 100644 index 00000000..a6dfa057 --- /dev/null +++ b/test/boost_no_0x_hdr_thread.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_THREAD +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_thread { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_tuple.ipp b/test/boost_no_0x_hdr_tuple.ipp new file mode 100644 index 00000000..ba311d32 --- /dev/null +++ b/test/boost_no_0x_hdr_tuple.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_TUPLE +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_tuple { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_type_traits.ipp b/test/boost_no_0x_hdr_type_traits.ipp new file mode 100644 index 00000000..9993804a --- /dev/null +++ b/test/boost_no_0x_hdr_type_traits.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_TYPE_TRAITS +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_type_traits { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_unordered_map.ipp b/test/boost_no_0x_hdr_unordered_map.ipp new file mode 100644 index 00000000..5377535b --- /dev/null +++ b/test/boost_no_0x_hdr_unordered_map.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_UNORDERED_MAP +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_unordered_map { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_0x_hdr_unordered_set.ipp b/test/boost_no_0x_hdr_unordered_set.ipp new file mode 100644 index 00000000..2bf6cd95 --- /dev/null +++ b/test/boost_no_0x_hdr_unordered_set.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_UNORDERED_SET +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_unordered_set { + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_concepts.ipp b/test/boost_no_concepts.ipp new file mode 100644 index 00000000..d5202b0d --- /dev/null +++ b/test/boost_no_concepts.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_CONCEPTS +// TITLE: C++0x concepts feature unavailable +// DESCRIPTION: The compiler does not support the C++0x concepts feature + +namespace boost_no_concepts { + +concept Foo { } + +int test() +{ + return 0; +} + +} diff --git a/test/boost_no_lambdas.ipp b/test/boost_no_lambdas.ipp new file mode 100644 index 00000000..c331c9f6 --- /dev/null +++ b/test/boost_no_lambdas.ipp @@ -0,0 +1,23 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_LAMBDAS +// TITLE: C++0x lambdas feature unavailable +// DESCRIPTION: The compiler does not support the C++0x lambdas feature + +#include + +namespace boost_no_lambdas { + +int test() +{ + assert( 12345 == [](){return 12345;} ); + return 0; +} + +} diff --git a/test/boost_no_nullptr.ipp b/test/boost_no_nullptr.ipp new file mode 100644 index 00000000..254162c9 --- /dev/null +++ b/test/boost_no_nullptr.ipp @@ -0,0 +1,21 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_NULLPTR +// TITLE: C++0x nullptr feature unavailable +// DESCRIPTION: The compiler does not support the C++0x nullptr feature + +namespace boost_no_nullptr { + +int test() +{ + int * p = nullptr; + return 0; +} + +} diff --git a/test/boost_no_template_aliases.ipp b/test/boost_no_template_aliases.ipp new file mode 100644 index 00000000..cf961632 --- /dev/null +++ b/test/boost_no_template_aliases.ipp @@ -0,0 +1,22 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_TEMPLATE_ALIASES +// TITLE: C++0x template_aliases feature unavailable +// DESCRIPTION: The compiler does not support the C++0x template_aliases feature + +namespace boost_no_template_aliases { + +using PINT = void (*)(int); // using plus C-style type + +int test() +{ + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 87b6b8ad..f9986b3c 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -953,6 +953,27 @@ void print_boost_macros() PRINT_MACRO(BOOST_HAS_WINTHREADS); PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES); PRINT_MACRO(BOOST_MSVC_STD_ITERATOR); + PRINT_MACRO(BOOST_NO_0X_HDR_ARRAY); + PRINT_MACRO(BOOST_NO_0X_HDR_CHRONO); + PRINT_MACRO(BOOST_NO_0X_HDR_CODECVT); + PRINT_MACRO(BOOST_NO_0X_HDR_CONCEPTS); + PRINT_MACRO(BOOST_NO_0X_HDR_CONDITION_VARIABLE); + PRINT_MACRO(BOOST_NO_0X_HDR_CONTAINER_CONCEPTS); + PRINT_MACRO(BOOST_NO_0X_HDR_FORWARD_LIST); + PRINT_MACRO(BOOST_NO_0X_HDR_FUTURE); + PRINT_MACRO(BOOST_NO_0X_HDR_INITIALIZER_LIST); + PRINT_MACRO(BOOST_NO_0X_HDR_ITERATOR_CONCEPTS); + PRINT_MACRO(BOOST_NO_0X_HDR_MEMORY_CONCEPTS); + PRINT_MACRO(BOOST_NO_0X_HDR_MUTEX); + PRINT_MACRO(BOOST_NO_0X_HDR_RANDOM); + PRINT_MACRO(BOOST_NO_0X_HDR_RATIO); + PRINT_MACRO(BOOST_NO_0X_HDR_REGEX); + PRINT_MACRO(BOOST_NO_0X_HDR_SYSTEM_ERROR); + PRINT_MACRO(BOOST_NO_0X_HDR_THREAD); + PRINT_MACRO(BOOST_NO_0X_HDR_TUPLE); + PRINT_MACRO(BOOST_NO_0X_HDR_TYPE_TRAITS); + PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_MAP); + PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_SET); PRINT_MACRO(BOOST_NO_ADL_BARRIER); PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); @@ -961,6 +982,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_AUTO_PTR); PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); + PRINT_MACRO(BOOST_NO_CONCEPTS); PRINT_MACRO(BOOST_NO_CONSTEXPR); PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS); @@ -986,6 +1008,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_IOSFWD); PRINT_MACRO(BOOST_NO_IOSTREAM); PRINT_MACRO(BOOST_NO_IS_ABSTRACT); + PRINT_MACRO(BOOST_NO_LAMBDAS); PRINT_MACRO(BOOST_NO_LIMITS); PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS); PRINT_MACRO(BOOST_NO_LONG_LONG); @@ -996,6 +1019,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP); + PRINT_MACRO(BOOST_NO_NULLPTR); PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); @@ -1025,6 +1049,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_SWPRINTF); PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS); PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS); + PRINT_MACRO(BOOST_NO_TEMPLATE_ALIASES); PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION); PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES); PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP); @@ -1039,6 +1064,13 @@ void print_boost_macros() + + + + + + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 7d485070..0146c193 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon May 11 07:24:23 2009 +// This file was automatically generated on Fri May 15 12:45:15 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -22,6 +22,111 @@ int error_count = 0; +#ifndef BOOST_NO_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +namespace boost_no_0x_hdr_array = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +namespace boost_no_0x_hdr_chrono = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +namespace boost_no_0x_hdr_codecvt = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CONCEPTS +#include "boost_no_0x_hdr_concepts.ipp" +#else +namespace boost_no_0x_hdr_concepts = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +namespace boost_no_0x_hdr_condition_variable = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +#include "boost_no_0x_hdr_container_concepts.ipp" +#else +namespace boost_no_0x_hdr_container_concepts = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +namespace boost_no_0x_hdr_forward_list = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +namespace boost_no_0x_hdr_future = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +namespace boost_no_0x_hdr_initializer_list = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +#include "boost_no_0x_hdr_iterator_concepts.ipp" +#else +namespace boost_no_0x_hdr_iterator_concepts = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_MEMORY_CONCEPTS +#include "boost_no_0x_hdr_memory_concepts.ipp" +#else +namespace boost_no_0x_hdr_memory_concepts = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +namespace boost_no_0x_hdr_mutex = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +namespace boost_no_0x_hdr_random = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +namespace boost_no_0x_hdr_ratio = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +namespace boost_no_0x_hdr_regex = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +namespace boost_no_0x_hdr_system_error = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +namespace boost_no_0x_hdr_thread = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +namespace boost_no_0x_hdr_tuple = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +namespace boost_no_0x_hdr_type_traits = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +namespace boost_no_0x_hdr_unordered_map = empty_boost; +#endif +#ifndef BOOST_NO_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +namespace boost_no_0x_hdr_unordered_set = empty_boost; +#endif #ifndef BOOST_NO_ADL_BARRIER #include "boost_no_adl_barrier.ipp" #else @@ -67,6 +172,11 @@ namespace boost_no_char16_t = empty_boost; #else namespace boost_no_char32_t = empty_boost; #endif +#ifndef BOOST_NO_CONCEPTS +#include "boost_no_concepts.ipp" +#else +namespace boost_no_concepts = empty_boost; +#endif #ifndef BOOST_NO_CONSTEXPR #include "boost_no_constexpr.ipp" #else @@ -202,6 +312,11 @@ namespace boost_no_is_abstract = empty_boost; #else namespace boost_no_templated_iterator_constructors = empty_boost; #endif +#ifndef BOOST_NO_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +namespace boost_no_lambdas = empty_boost; +#endif #ifndef BOOST_NO_LIMITS #include "boost_no_limits.ipp" #else @@ -252,6 +367,11 @@ namespace boost_no_pointer_to_member_template_parameters = empty_boost; #else namespace boost_no_nested_friendship = empty_boost; #endif +#ifndef BOOST_NO_NULLPTR +#include "boost_no_nullptr.ipp" +#else +namespace boost_no_nullptr = empty_boost; +#endif #ifndef BOOST_NO_OPERATORS_IN_NAMESPACE #include "boost_no_ops_in_namespace.ipp" #else @@ -392,6 +512,11 @@ namespace boost_no_std_wstring = empty_boost; #else namespace boost_no_swprintf = empty_boost; #endif +#ifndef BOOST_NO_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +namespace boost_no_template_aliases = empty_boost; +#endif #ifndef BOOST_NO_TEMPLATED_IOSTREAMS #include "boost_no_template_streams.ipp" #else @@ -966,6 +1091,111 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_HAS_WINTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_0x_hdr_array::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_chrono::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CHRONO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_codecvt::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CODECVT at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_concepts::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_condition_variable::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CONDITION_VARIABLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_container_concepts::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_CONTAINER_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_forward_list::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_FORWARD_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_future::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_FUTURE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_initializer_list::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_INITIALIZER_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_iterator_concepts::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_ITERATOR_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_memory_concepts::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_MEMORY_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_mutex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_MUTEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_random::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_RANDOM at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_ratio::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_RATIO at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_regex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_REGEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_system_error::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_SYSTEM_ERROR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_thread::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_THREAD at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_tuple::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_type_traits::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_unordered_map::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_UNORDERED_MAP at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } + if(0 != boost_no_0x_hdr_unordered_set::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_UNORDERED_SET at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_adl_barrier::test()) { std::cerr << "Failed test for BOOST_NO_ADL_BARRIER at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1011,6 +1241,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_concepts::test()) + { + std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_constexpr::test()) { std::cerr << "Failed test for BOOST_NO_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1146,6 +1381,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_lambdas::test()) + { + std::cerr << "Failed test for BOOST_NO_LAMBDAS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_limits::test()) { std::cerr << "Failed test for BOOST_NO_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1196,6 +1436,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_NESTED_FRIENDSHIP at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_nullptr::test()) + { + std::cerr << "Failed test for BOOST_NO_NULLPTR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_operators_in_namespace::test()) { std::cerr << "Failed test for BOOST_NO_OPERATORS_IN_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1336,6 +1581,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_SWPRINTF at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_template_aliases::test()) + { + std::cerr << "Failed test for BOOST_NO_TEMPLATE_ALIASES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_templated_iostreams::test()) { std::cerr << "Failed test for BOOST_NO_TEMPLATED_IOSTREAMS at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_0x_hdr_array_fail.cpp b/test/no_0x_hdr_array_fail.cpp new file mode 100644 index 00000000..64bea165 --- /dev/null +++ b/test/no_0x_hdr_array_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:10:32 2009 +// 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_0X_HDR_ARRAY +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_ARRAY should not be defined. +// See file boost_no_0x_hdr_array.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_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_array::test(); +} + diff --git a/test/no_0x_hdr_array_pass.cpp b/test/no_0x_hdr_array_pass.cpp new file mode 100644 index 00000000..0539fad7 --- /dev/null +++ b/test/no_0x_hdr_array_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:10:32 2009 +// 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_0X_HDR_ARRAY +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_ARRAY should be defined. +// See file boost_no_0x_hdr_array.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_0X_HDR_ARRAY +#include "boost_no_0x_hdr_array.ipp" +#else +namespace boost_no_0x_hdr_array = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_array::test(); +} + diff --git a/test/no_0x_hdr_chrono_fail.cpp b/test/no_0x_hdr_chrono_fail.cpp new file mode 100644 index 00000000..f345fa56 --- /dev/null +++ b/test/no_0x_hdr_chrono_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CHRONO +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CHRONO should not be defined. +// See file boost_no_0x_hdr_chrono.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_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_chrono::test(); +} + diff --git a/test/no_0x_hdr_chrono_pass.cpp b/test/no_0x_hdr_chrono_pass.cpp new file mode 100644 index 00000000..fc8f6396 --- /dev/null +++ b/test/no_0x_hdr_chrono_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CHRONO +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CHRONO should be defined. +// See file boost_no_0x_hdr_chrono.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_0X_HDR_CHRONO +#include "boost_no_0x_hdr_chrono.ipp" +#else +namespace boost_no_0x_hdr_chrono = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_chrono::test(); +} + diff --git a/test/no_0x_hdr_codecvt_fail.cpp b/test/no_0x_hdr_codecvt_fail.cpp new file mode 100644 index 00000000..6cfcfb25 --- /dev/null +++ b/test/no_0x_hdr_codecvt_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CODECVT +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CODECVT should not be defined. +// See file boost_no_0x_hdr_codecvt.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_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_codecvt::test(); +} + diff --git a/test/no_0x_hdr_codecvt_pass.cpp b/test/no_0x_hdr_codecvt_pass.cpp new file mode 100644 index 00000000..93c74f2f --- /dev/null +++ b/test/no_0x_hdr_codecvt_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CODECVT +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CODECVT should be defined. +// See file boost_no_0x_hdr_codecvt.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_0X_HDR_CODECVT +#include "boost_no_0x_hdr_codecvt.ipp" +#else +namespace boost_no_0x_hdr_codecvt = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_codecvt::test(); +} + diff --git a/test/no_0x_hdr_concepts_fail.cpp b/test/no_0x_hdr_concepts_fail.cpp new file mode 100644 index 00000000..d9572a19 --- /dev/null +++ b/test/no_0x_hdr_concepts_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONCEPTS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CONCEPTS should not be defined. +// See file boost_no_0x_hdr_concepts.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_0X_HDR_CONCEPTS +#include "boost_no_0x_hdr_concepts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_concepts::test(); +} + diff --git a/test/no_0x_hdr_concepts_pass.cpp b/test/no_0x_hdr_concepts_pass.cpp new file mode 100644 index 00000000..335043bf --- /dev/null +++ b/test/no_0x_hdr_concepts_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONCEPTS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CONCEPTS should be defined. +// See file boost_no_0x_hdr_concepts.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_0X_HDR_CONCEPTS +#include "boost_no_0x_hdr_concepts.ipp" +#else +namespace boost_no_0x_hdr_concepts = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_concepts::test(); +} + diff --git a/test/no_0x_hdr_condition_variable_fail.cpp b/test/no_0x_hdr_condition_variable_fail.cpp new file mode 100644 index 00000000..a119cfc9 --- /dev/null +++ b/test/no_0x_hdr_condition_variable_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONDITION_VARIABLE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CONDITION_VARIABLE should not be defined. +// See file boost_no_0x_hdr_condition_variable.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_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_condition_variable::test(); +} + diff --git a/test/no_0x_hdr_condition_variable_pass.cpp b/test/no_0x_hdr_condition_variable_pass.cpp new file mode 100644 index 00000000..1749f243 --- /dev/null +++ b/test/no_0x_hdr_condition_variable_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONDITION_VARIABLE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CONDITION_VARIABLE should be defined. +// See file boost_no_0x_hdr_condition_variable.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_0X_HDR_CONDITION_VARIABLE +#include "boost_no_0x_hdr_condition_variable.ipp" +#else +namespace boost_no_0x_hdr_condition_variable = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_condition_variable::test(); +} + diff --git a/test/no_0x_hdr_container_concepts_fail.cpp b/test/no_0x_hdr_container_concepts_fail.cpp new file mode 100644 index 00000000..e5eb9a08 --- /dev/null +++ b/test/no_0x_hdr_container_concepts_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONTAINER_CONCEPTS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_CONTAINER_CONCEPTS should not be defined. +// See file boost_no_0x_hdr_container_concepts.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_0X_HDR_CONTAINER_CONCEPTS +#include "boost_no_0x_hdr_container_concepts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_container_concepts::test(); +} + diff --git a/test/no_0x_hdr_container_concepts_pass.cpp b/test/no_0x_hdr_container_concepts_pass.cpp new file mode 100644 index 00000000..e2e4fc97 --- /dev/null +++ b/test/no_0x_hdr_container_concepts_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_CONTAINER_CONCEPTS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_CONTAINER_CONCEPTS should be defined. +// See file boost_no_0x_hdr_container_concepts.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_0X_HDR_CONTAINER_CONCEPTS +#include "boost_no_0x_hdr_container_concepts.ipp" +#else +namespace boost_no_0x_hdr_container_concepts = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_container_concepts::test(); +} + diff --git a/test/no_0x_hdr_forward_list_fail.cpp b/test/no_0x_hdr_forward_list_fail.cpp new file mode 100644 index 00000000..0aca798b --- /dev/null +++ b/test/no_0x_hdr_forward_list_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_FORWARD_LIST +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_FORWARD_LIST should not be defined. +// See file boost_no_0x_hdr_forward_list.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_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_forward_list::test(); +} + diff --git a/test/no_0x_hdr_forward_list_pass.cpp b/test/no_0x_hdr_forward_list_pass.cpp new file mode 100644 index 00000000..3b8d2fff --- /dev/null +++ b/test/no_0x_hdr_forward_list_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_FORWARD_LIST +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_FORWARD_LIST should be defined. +// See file boost_no_0x_hdr_forward_list.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_0X_HDR_FORWARD_LIST +#include "boost_no_0x_hdr_forward_list.ipp" +#else +namespace boost_no_0x_hdr_forward_list = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_forward_list::test(); +} + diff --git a/test/no_0x_hdr_future_fail.cpp b/test/no_0x_hdr_future_fail.cpp new file mode 100644 index 00000000..ca4ba880 --- /dev/null +++ b/test/no_0x_hdr_future_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_FUTURE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_FUTURE should not be defined. +// See file boost_no_0x_hdr_future.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_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_future::test(); +} + diff --git a/test/no_0x_hdr_future_pass.cpp b/test/no_0x_hdr_future_pass.cpp new file mode 100644 index 00000000..7e99a53d --- /dev/null +++ b/test/no_0x_hdr_future_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_FUTURE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_FUTURE should be defined. +// See file boost_no_0x_hdr_future.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_0X_HDR_FUTURE +#include "boost_no_0x_hdr_future.ipp" +#else +namespace boost_no_0x_hdr_future = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_future::test(); +} + diff --git a/test/no_0x_hdr_initializer_list_fail.cpp b/test/no_0x_hdr_initializer_list_fail.cpp new file mode 100644 index 00000000..56afc393 --- /dev/null +++ b/test/no_0x_hdr_initializer_list_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_INITIALIZER_LIST +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_INITIALIZER_LIST should not be defined. +// See file boost_no_0x_hdr_initializer_list.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_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_initializer_list::test(); +} + diff --git a/test/no_0x_hdr_initializer_list_pass.cpp b/test/no_0x_hdr_initializer_list_pass.cpp new file mode 100644 index 00000000..e4d40a84 --- /dev/null +++ b/test/no_0x_hdr_initializer_list_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_INITIALIZER_LIST +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_INITIALIZER_LIST should be defined. +// See file boost_no_0x_hdr_initializer_list.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_0X_HDR_INITIALIZER_LIST +#include "boost_no_0x_hdr_initializer_list.ipp" +#else +namespace boost_no_0x_hdr_initializer_list = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_initializer_list::test(); +} + diff --git a/test/no_0x_hdr_iterator_concepts_fail.cpp b/test/no_0x_hdr_iterator_concepts_fail.cpp new file mode 100644 index 00000000..728a31c4 --- /dev/null +++ b/test/no_0x_hdr_iterator_concepts_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_ITERATOR_CONCEPTS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_ITERATOR_CONCEPTS should not be defined. +// See file boost_no_0x_hdr_iterator_concepts.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_0X_HDR_ITERATOR_CONCEPTS +#include "boost_no_0x_hdr_iterator_concepts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_iterator_concepts::test(); +} + diff --git a/test/no_0x_hdr_iterator_concepts_pass.cpp b/test/no_0x_hdr_iterator_concepts_pass.cpp new file mode 100644 index 00000000..77d8d20d --- /dev/null +++ b/test/no_0x_hdr_iterator_concepts_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_ITERATOR_CONCEPTS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_ITERATOR_CONCEPTS should be defined. +// See file boost_no_0x_hdr_iterator_concepts.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_0X_HDR_ITERATOR_CONCEPTS +#include "boost_no_0x_hdr_iterator_concepts.ipp" +#else +namespace boost_no_0x_hdr_iterator_concepts = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_iterator_concepts::test(); +} + diff --git a/test/no_0x_hdr_memory_concepts_fail.cpp b/test/no_0x_hdr_memory_concepts_fail.cpp new file mode 100644 index 00000000..aef47c02 --- /dev/null +++ b/test/no_0x_hdr_memory_concepts_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_MEMORY_CONCEPTS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_MEMORY_CONCEPTS should not be defined. +// See file boost_no_0x_hdr_memory_concepts.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_0X_HDR_MEMORY_CONCEPTS +#include "boost_no_0x_hdr_memory_concepts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_memory_concepts::test(); +} + diff --git a/test/no_0x_hdr_memory_concepts_pass.cpp b/test/no_0x_hdr_memory_concepts_pass.cpp new file mode 100644 index 00000000..516b50ed --- /dev/null +++ b/test/no_0x_hdr_memory_concepts_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_MEMORY_CONCEPTS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_MEMORY_CONCEPTS should be defined. +// See file boost_no_0x_hdr_memory_concepts.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_0X_HDR_MEMORY_CONCEPTS +#include "boost_no_0x_hdr_memory_concepts.ipp" +#else +namespace boost_no_0x_hdr_memory_concepts = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_memory_concepts::test(); +} + diff --git a/test/no_0x_hdr_mutex_fail.cpp b/test/no_0x_hdr_mutex_fail.cpp new file mode 100644 index 00000000..b9150146 --- /dev/null +++ b/test/no_0x_hdr_mutex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_MUTEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_MUTEX should not be defined. +// See file boost_no_0x_hdr_mutex.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_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_mutex::test(); +} + diff --git a/test/no_0x_hdr_mutex_pass.cpp b/test/no_0x_hdr_mutex_pass.cpp new file mode 100644 index 00000000..db7c7473 --- /dev/null +++ b/test/no_0x_hdr_mutex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_MUTEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_MUTEX should be defined. +// See file boost_no_0x_hdr_mutex.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_0X_HDR_MUTEX +#include "boost_no_0x_hdr_mutex.ipp" +#else +namespace boost_no_0x_hdr_mutex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_mutex::test(); +} + diff --git a/test/no_0x_hdr_random_fail.cpp b/test/no_0x_hdr_random_fail.cpp new file mode 100644 index 00000000..2ac05872 --- /dev/null +++ b/test/no_0x_hdr_random_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_RANDOM +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_RANDOM should not be defined. +// See file boost_no_0x_hdr_random.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_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_random::test(); +} + diff --git a/test/no_0x_hdr_random_pass.cpp b/test/no_0x_hdr_random_pass.cpp new file mode 100644 index 00000000..0d8946c6 --- /dev/null +++ b/test/no_0x_hdr_random_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_RANDOM +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_RANDOM should be defined. +// See file boost_no_0x_hdr_random.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_0X_HDR_RANDOM +#include "boost_no_0x_hdr_random.ipp" +#else +namespace boost_no_0x_hdr_random = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_random::test(); +} + diff --git a/test/no_0x_hdr_ratio_fail.cpp b/test/no_0x_hdr_ratio_fail.cpp new file mode 100644 index 00000000..68279dd1 --- /dev/null +++ b/test/no_0x_hdr_ratio_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_RATIO +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_RATIO should not be defined. +// See file boost_no_0x_hdr_ratio.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_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_ratio::test(); +} + diff --git a/test/no_0x_hdr_ratio_pass.cpp b/test/no_0x_hdr_ratio_pass.cpp new file mode 100644 index 00000000..e9bc43fd --- /dev/null +++ b/test/no_0x_hdr_ratio_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_RATIO +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_RATIO should be defined. +// See file boost_no_0x_hdr_ratio.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_0X_HDR_RATIO +#include "boost_no_0x_hdr_ratio.ipp" +#else +namespace boost_no_0x_hdr_ratio = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_ratio::test(); +} + diff --git a/test/no_0x_hdr_regex_fail.cpp b/test/no_0x_hdr_regex_fail.cpp new file mode 100644 index 00000000..daeff2bc --- /dev/null +++ b/test/no_0x_hdr_regex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_REGEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_REGEX should not be defined. +// See file boost_no_0x_hdr_regex.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_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_regex::test(); +} + diff --git a/test/no_0x_hdr_regex_pass.cpp b/test/no_0x_hdr_regex_pass.cpp new file mode 100644 index 00000000..81c2138d --- /dev/null +++ b/test/no_0x_hdr_regex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_REGEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_REGEX should be defined. +// See file boost_no_0x_hdr_regex.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_0X_HDR_REGEX +#include "boost_no_0x_hdr_regex.ipp" +#else +namespace boost_no_0x_hdr_regex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_regex::test(); +} + diff --git a/test/no_0x_hdr_system_error_fail.cpp b/test/no_0x_hdr_system_error_fail.cpp new file mode 100644 index 00000000..73cb08b5 --- /dev/null +++ b/test/no_0x_hdr_system_error_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_SYSTEM_ERROR +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_SYSTEM_ERROR should not be defined. +// See file boost_no_0x_hdr_system_error.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_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_system_error::test(); +} + diff --git a/test/no_0x_hdr_system_error_pass.cpp b/test/no_0x_hdr_system_error_pass.cpp new file mode 100644 index 00000000..9cf8b4f0 --- /dev/null +++ b/test/no_0x_hdr_system_error_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_SYSTEM_ERROR +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_SYSTEM_ERROR should be defined. +// See file boost_no_0x_hdr_system_error.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_0X_HDR_SYSTEM_ERROR +#include "boost_no_0x_hdr_system_error.ipp" +#else +namespace boost_no_0x_hdr_system_error = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_system_error::test(); +} + diff --git a/test/no_0x_hdr_thread_fail.cpp b/test/no_0x_hdr_thread_fail.cpp new file mode 100644 index 00000000..2a0c73eb --- /dev/null +++ b/test/no_0x_hdr_thread_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:45:15 2009 +// 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_0X_HDR_THREAD +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_THREAD should not be defined. +// See file boost_no_0x_hdr_thread.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_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_thread::test(); +} + diff --git a/test/no_0x_hdr_thread_pass.cpp b/test/no_0x_hdr_thread_pass.cpp new file mode 100644 index 00000000..2184b439 --- /dev/null +++ b/test/no_0x_hdr_thread_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 12:45:15 2009 +// 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_0X_HDR_THREAD +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_THREAD should be defined. +// See file boost_no_0x_hdr_thread.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_0X_HDR_THREAD +#include "boost_no_0x_hdr_thread.ipp" +#else +namespace boost_no_0x_hdr_thread = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_thread::test(); +} + diff --git a/test/no_0x_hdr_tuple_fail.cpp b/test/no_0x_hdr_tuple_fail.cpp new file mode 100644 index 00000000..80d7d7f8 --- /dev/null +++ b/test/no_0x_hdr_tuple_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_TUPLE +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TUPLE should not be defined. +// See file boost_no_0x_hdr_tuple.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_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_tuple::test(); +} + diff --git a/test/no_0x_hdr_tuple_pass.cpp b/test/no_0x_hdr_tuple_pass.cpp new file mode 100644 index 00000000..69729b67 --- /dev/null +++ b/test/no_0x_hdr_tuple_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_TUPLE +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TUPLE should be defined. +// See file boost_no_0x_hdr_tuple.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_0X_HDR_TUPLE +#include "boost_no_0x_hdr_tuple.ipp" +#else +namespace boost_no_0x_hdr_tuple = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_tuple::test(); +} + diff --git a/test/no_0x_hdr_type_traits_fail.cpp b/test/no_0x_hdr_type_traits_fail.cpp new file mode 100644 index 00000000..af09e818 --- /dev/null +++ b/test/no_0x_hdr_type_traits_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_TYPE_TRAITS +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TYPE_TRAITS should not be defined. +// See file boost_no_0x_hdr_type_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_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_type_traits::test(); +} + diff --git a/test/no_0x_hdr_type_traits_pass.cpp b/test/no_0x_hdr_type_traits_pass.cpp new file mode 100644 index 00000000..7f248b65 --- /dev/null +++ b/test/no_0x_hdr_type_traits_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_TYPE_TRAITS +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TYPE_TRAITS should be defined. +// See file boost_no_0x_hdr_type_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_0X_HDR_TYPE_TRAITS +#include "boost_no_0x_hdr_type_traits.ipp" +#else +namespace boost_no_0x_hdr_type_traits = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_type_traits::test(); +} + diff --git a/test/no_0x_hdr_unordered_map_fail.cpp b/test/no_0x_hdr_unordered_map_fail.cpp new file mode 100644 index 00000000..292fd5de --- /dev/null +++ b/test/no_0x_hdr_unordered_map_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_UNORDERED_MAP +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_UNORDERED_MAP should not be defined. +// See file boost_no_0x_hdr_unordered_map.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_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_map::test(); +} + diff --git a/test/no_0x_hdr_unordered_map_pass.cpp b/test/no_0x_hdr_unordered_map_pass.cpp new file mode 100644 index 00000000..1ed20d30 --- /dev/null +++ b/test/no_0x_hdr_unordered_map_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_UNORDERED_MAP +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_UNORDERED_MAP should be defined. +// See file boost_no_0x_hdr_unordered_map.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_0X_HDR_UNORDERED_MAP +#include "boost_no_0x_hdr_unordered_map.ipp" +#else +namespace boost_no_0x_hdr_unordered_map = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_map::test(); +} + diff --git a/test/no_0x_hdr_unordered_set_fail.cpp b/test/no_0x_hdr_unordered_set_fail.cpp new file mode 100644 index 00000000..859733a5 --- /dev/null +++ b/test/no_0x_hdr_unordered_set_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_UNORDERED_SET +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_UNORDERED_SET should not be defined. +// See file boost_no_0x_hdr_unordered_set.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_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_set::test(); +} + diff --git a/test/no_0x_hdr_unordered_set_pass.cpp b/test/no_0x_hdr_unordered_set_pass.cpp new file mode 100644 index 00000000..16b5a25d --- /dev/null +++ b/test/no_0x_hdr_unordered_set_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_0X_HDR_UNORDERED_SET +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_UNORDERED_SET should be defined. +// See file boost_no_0x_hdr_unordered_set.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_0X_HDR_UNORDERED_SET +#include "boost_no_0x_hdr_unordered_set.ipp" +#else +namespace boost_no_0x_hdr_unordered_set = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_unordered_set::test(); +} + diff --git a/test/no_concepts_fail.cpp b/test/no_concepts_fail.cpp new file mode 100644 index 00000000..6478e187 --- /dev/null +++ b/test/no_concepts_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_CONCEPTS +// This file should not compile, if it does then +// BOOST_NO_CONCEPTS should not be defined. +// See file boost_no_concepts.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_CONCEPTS +#include "boost_no_concepts.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_concepts::test(); +} + diff --git a/test/no_concepts_pass.cpp b/test/no_concepts_pass.cpp new file mode 100644 index 00000000..ad36d9c2 --- /dev/null +++ b/test/no_concepts_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri May 15 11:57:42 2009 +// 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_CONCEPTS +// This file should compile, if it does not then +// BOOST_NO_CONCEPTS should be defined. +// See file boost_no_concepts.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_CONCEPTS +#include "boost_no_concepts.ipp" +#else +namespace boost_no_concepts = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_concepts::test(); +} + diff --git a/test/no_lambdas_fail.cpp b/test/no_lambdas_fail.cpp new file mode 100644 index 00000000..29adaca4 --- /dev/null +++ b/test/no_lambdas_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// 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_LAMBDAS +// This file should not compile, if it does then +// BOOST_NO_LAMBDAS should not be defined. +// See file boost_no_lambdas.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_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_lambdas::test(); +} + diff --git a/test/no_lambdas_pass.cpp b/test/no_lambdas_pass.cpp new file mode 100644 index 00000000..7f08b380 --- /dev/null +++ b/test/no_lambdas_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// 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_LAMBDAS +// This file should compile, if it does not then +// BOOST_NO_LAMBDAS should be defined. +// See file boost_no_lambdas.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_LAMBDAS +#include "boost_no_lambdas.ipp" +#else +namespace boost_no_lambdas = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_lambdas::test(); +} + diff --git a/test/no_nullptr_fail.cpp b/test/no_nullptr_fail.cpp new file mode 100644 index 00000000..bdbfde9a --- /dev/null +++ b/test/no_nullptr_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// 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_NULLPTR +// This file should not compile, if it does then +// BOOST_NO_NULLPTR should not be defined. +// See file boost_no_nullptr.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_NULLPTR +#include "boost_no_nullptr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_nullptr::test(); +} + diff --git a/test/no_nullptr_pass.cpp b/test/no_nullptr_pass.cpp new file mode 100644 index 00000000..7a5d2c5f --- /dev/null +++ b/test/no_nullptr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:35 2009 +// 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_NULLPTR +// This file should compile, if it does not then +// BOOST_NO_NULLPTR should be defined. +// See file boost_no_nullptr.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_NULLPTR +#include "boost_no_nullptr.ipp" +#else +namespace boost_no_nullptr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_nullptr::test(); +} + diff --git a/test/no_template_aliases_fail.cpp b/test/no_template_aliases_fail.cpp new file mode 100644 index 00000000..8bda5eb9 --- /dev/null +++ b/test/no_template_aliases_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:36 2009 +// 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_TEMPLATE_ALIASES +// This file should not compile, if it does then +// BOOST_NO_TEMPLATE_ALIASES should not be defined. +// See file boost_no_template_aliases.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_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_template_aliases::test(); +} + diff --git a/test/no_template_aliases_pass.cpp b/test/no_template_aliases_pass.cpp new file mode 100644 index 00000000..2ff5dd38 --- /dev/null +++ b/test/no_template_aliases_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Thu May 14 16:01:36 2009 +// 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_TEMPLATE_ALIASES +// This file should compile, if it does not then +// BOOST_NO_TEMPLATE_ALIASES should be defined. +// See file boost_no_template_aliases.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_TEMPLATE_ALIASES +#include "boost_no_template_aliases.ipp" +#else +namespace boost_no_template_aliases = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_template_aliases::test(); +} + From f814c8fef1db902189cde44b4a1f344d60b0af43 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 16 May 2009 18:41:33 +0000 Subject: [PATCH 070/435] Refine glibc++ feature tests based on feedback from Jonathan Wakely [SVN r53057] --- include/boost/config/stdlib/libstdcpp3.hpp | 20 ++++++++++++++++---- test/config_info.cpp | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index cfdb9460..6a57319f 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -77,9 +77,21 @@ # endif #endif -// C++0x headers in 20090124 (GCC 4.3.2) and later +// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly +// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++ +// developers. He also commented: // -#if !defined(__GLIBCXX__) || __GLIBCXX__<20090124 || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in +// GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305. +// Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support +// than any release in the 4.2 series." +// +// Another resource for understanding stdlibc++ features is: +// http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x + +// C++0x headers in GCC 4.3.0 and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_REGEX @@ -90,9 +102,9 @@ # define BOOST_NO_0X_HDR_UNORDERED_SET #endif -// C++0x headers in 20090421 (GCC 4.4.0) and later +// C++0x headers in GCC 4.4.0 and later // -#if !defined(__GLIBCXX__) || __GLIBCXX__<20090421 || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CONDITION_VARIABLE # define BOOST_NO_0X_HDR_FORWARD_LIST diff --git a/test/config_info.cpp b/test/config_info.cpp index f9986b3c..04061ff6 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -154,6 +154,7 @@ void print_compiler_macros() // GNUC options: PRINT_MACRO(__GNUC__); PRINT_MACRO(__GNUC_MINOR__); + PRINT_MACRO(__GNUC_PATCHLEVEL__); PRINT_MACRO(__STDC_VERSION__); PRINT_MACRO(__GNUG__); PRINT_MACRO(__STRICT_ANSI__); From e1d9c0281a8a8def3d0facc02dc8a049e31cf09f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 19 May 2009 11:39:24 +0000 Subject: [PATCH 071/435] Fixes #3047. [SVN r53107] --- 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 b5fe76cf..e3dfaaae 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -131,10 +131,10 @@ // disable Win32 API's if compiler extentions are // turned off: // -#ifndef _MSC_EXTENSIONS +#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32) # define BOOST_DISABLE_WIN32 #endif -#ifndef _CPPRTTI +#if !defined(_CPPRTTI) && !defined(BOOST_NO_RTTI) # define BOOST_NO_RTTI #endif From 6695277f1a8643f8574aeed713ea3bed01d69376 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Tue, 19 May 2009 13:34:04 +0000 Subject: [PATCH 072/435] Aways define BOOST_NO_SCOPED_ENUMS until GCC Bugzilla Bug 38064 gets fixed. [SVN r53108] --- include/boost/config/compiler/gcc.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 34a3419c..94653c89 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -109,6 +109,9 @@ #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS +// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS until it +// gets fixed. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 +#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later @@ -145,7 +148,7 @@ # define BOOST_NO_DEFAULTED_FUNCTIONS # define BOOST_NO_DELETED_FUNCTIONS # define BOOST_NO_INITIALIZER_LISTS -# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_SCOPED_ENUMS # define BOOST_NO_UNICODE_LITERALS #endif From b03d5829b5e019744e429ba178dd5e0931f0b418 Mon Sep 17 00:00:00 2001 From: Jeremiah Willcock Date: Wed, 20 May 2009 19:19:00 +0000 Subject: [PATCH 073/435] Fixed most tab and min/max issues from trunk inspection report [SVN r53141] --- test/boost_no_template_aliases.ipp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/boost_no_template_aliases.ipp b/test/boost_no_template_aliases.ipp index cf961632..e420da78 100644 --- a/test/boost_no_template_aliases.ipp +++ b/test/boost_no_template_aliases.ipp @@ -12,7 +12,7 @@ namespace boost_no_template_aliases { -using PINT = void (*)(int); // using plus C-style type +using PINT = void (*)(int); // using plus C-style type int test() { From d46a6d5ec86ec37df13f4ddce801bbae8b129ea5 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Thu, 21 May 2009 15:16:39 +0000 Subject: [PATCH 074/435] set up config for VC++ 2010 beta 1 [SVN r53155] --- include/boost/config/compiler/visualc.hpp | 26 +++++++++++-------- include/boost/config/stdlib/dinkumware.hpp | 29 +++++++++++++--------- test/all/Jamfile.v2 | 2 +- test/boost_no_lambdas.ipp | 8 +++--- test/config_info.cpp | 1 + test/config_test.cpp | 2 +- 6 files changed, 38 insertions(+), 30 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index e3dfaaae..2c3a2adf 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -142,10 +142,24 @@ // all versions support __declspec: // #define BOOST_HAS_DECLSPEC + // // C++0x features // // See above for BOOST_NO_LONG_LONG + +// C++ features supported by VC++ 10 (aka 2010) +// +#if _MSC_VER < 1600 +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_DECLTYPE +#define BOOST_NO_LAMBDAS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_STATIC_ASSERT +#endif // _MSC_VER < 1600 + +// C++0x features not supported by any versions #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T #define BOOST_NO_CONCEPTS @@ -162,16 +176,6 @@ #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -// MSVC 2010 will have some support for C++0x, but we disable it until the beta ships -// #if _MSC_VER < 1600 -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_DECLTYPE -#define BOOST_NO_LAMBDAS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_STATIC_ASSERT -// #endif // _MSC_VER < 1600 - // // prefix and suffix headers: // @@ -236,7 +240,7 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 1500 (VC9): +// last known and checked version is 1600 (VC10, aka 2010): #if (_MSC_VER > 1600) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 3e340c6a..addf3357 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -84,30 +84,35 @@ # define BOOST_NO_STD_LOCALE #endif -// C++0x headers not yet implemented +// C++0x headers implemented in 520 (as shipped by Microsoft) // +#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520 # define BOOST_NO_0X_HDR_ARRAY -# define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS -# define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST -# define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS -# define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM -# define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_REGEX # define BOOST_NO_0X_HDR_SYSTEM_ERROR -# define BOOST_NO_0X_HDR_THREAD -# define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +#endif + +// C++0x headers not yet implemented +// +# define BOOST_NO_0X_HDR_CHRONO +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TUPLE #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index cbcc6554..e7d6915c 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 Fri May 15 12:45:15 2009 +# This file was automatically generated on Thu May 21 11:08:48 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the diff --git a/test/boost_no_lambdas.ipp b/test/boost_no_lambdas.ipp index c331c9f6..1d9285f0 100644 --- a/test/boost_no_lambdas.ipp +++ b/test/boost_no_lambdas.ipp @@ -7,16 +7,14 @@ // See http://www.boost.org/libs/config for more information. // MACRO: BOOST_NO_LAMBDAS -// TITLE: C++0x lambdas feature unavailable -// DESCRIPTION: The compiler does not support the C++0x lambdas feature - -#include +// TITLE: C++0x lambda feature unavailable +// DESCRIPTION: The compiler does not support the C++0x lambda feature namespace boost_no_lambdas { int test() { - assert( 12345 == [](){return 12345;} ); + [](){}; return 0; } diff --git a/test/config_info.cpp b/test/config_info.cpp index 04061ff6..383412cb 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1072,6 +1072,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 0146c193..bc76fe54 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri May 15 12:45:15 2009 +// This file was automatically generated on Thu May 21 11:08:48 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the From 8894fa22f3dab14c3f987ed270057eb93c0ace55 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 1 Jun 2009 06:50:25 +0000 Subject: [PATCH 075/435] Define BOOST_NO_INITIALIZER_LISTS if library support isn't available. [SVN r53524] --- include/boost/config/suffix.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index ca803306..b5857c27 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -306,6 +306,14 @@ # define BOOST_HASH_MAP_HEADER #endif +// +// Set BOOST_NO_INITIALIZER_LISTS is there is no library support. +// + +#if defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS) +# define BOOST_NO_INITIALIZER_LISTS +#endif + // BOOST_HAS_ABI_HEADERS // This macro gets set if we have headers that fix the ABI, // and prevent ODR violations when linking to external libraries: From 21ad7ad74dae75eeb19ee1916412ef9549ddc1be Mon Sep 17 00:00:00 2001 From: Daniel James Date: Mon, 1 Jun 2009 06:52:36 +0000 Subject: [PATCH 076/435] Fix typo. [SVN r53526] --- include/boost/config/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index b5857c27..fa449869 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -307,7 +307,7 @@ #endif // -// Set BOOST_NO_INITIALIZER_LISTS is there is no library support. +// Set BOOST_NO_INITIALIZER_LISTS if there is no library support. // #if defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS) From 6bb61984866f46f2fff632dc76da851ad2ce0f00 Mon Sep 17 00:00:00 2001 From: David Dean Date: Mon, 8 Jun 2009 20:31:39 +0000 Subject: [PATCH 077/435] updating borland.hpp with defines for newest compiler [SVN r53760] --- include/boost/config/compiler/borland.hpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 16a70687..101b3687 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -17,7 +17,7 @@ #endif // last known compiler version: -#if (__BORLANDC__ > 0x610) +#if (__BORLANDC__ > 0x613) //# if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" //# else @@ -107,30 +107,28 @@ # endif #endif -// Borland C++ Builder 2007 December 2007 Update and below: -//#if (__BORLANDC__ <= 0x593) -#if (__BORLANDC__ <= 0x610) // Beman has asked Alisdair for more info +#if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +# define BOOST_NO_USING_TEMPLATE // Temporary workaround #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS #endif // Borland C++ Builder 2008 and below: -#if (__BORLANDC__ <= 0x601) # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -# define BOOST_ILLEGAL_CV_REFERENCES # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_TWO_PHASE_NAME_LOOKUP -# define BOOST_NO_USING_TEMPLATE # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE # define BOOST_NO_NESTED_FRIENDSHIP # define BOOST_NO_TYPENAME_WITH_CTOR +#if (__BORLANDC__ < 0x600) +# define BOOST_ILLEGAL_CV_REFERENCES #endif // @@ -235,7 +233,7 @@ // // ABI fixing headers: // -#if __BORLANDC__ < 0x600 // not implemented for version 6 compiler yet +#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet #ifndef BOOST_ABI_PREFIX # define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp" #endif From bb695e41e1b12d49a43f87820278ce0718de9334 Mon Sep 17 00:00:00 2001 From: David Dean Date: Tue, 9 Jun 2009 15:55:05 +0000 Subject: [PATCH 078/435] updating codegear.hpp with defines for newest compiler [SVN r53775] --- include/boost/config/compiler/codegear.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index c3293244..8d834b0e 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -20,7 +20,7 @@ // // versions check: // last known and checked version is 0x610 -#if (__CODEGEARC__ > 0x610) +#if (__CODEGEARC__ > 0x613) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else @@ -29,7 +29,7 @@ #endif // CodeGear C++ Builder 2009 -#if (__CODEGEARC__ <= 0x610) +#if (__CODEGEARC__ <= 0x613) # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS From ab378931aa30c976036bf0881c7730c995c1a742 Mon Sep 17 00:00:00 2001 From: David Dean Date: Thu, 11 Jun 2009 22:03:07 +0000 Subject: [PATCH 079/435] borland/codegear configuration patch to set BOOST_SP_NO_SP_CONVERTIBLE [SVN r53797] --- include/boost/config/compiler/borland.hpp | 1 + include/boost/config/compiler/codegear.hpp | 1 + 2 files changed, 2 insertions(+) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 101b3687..47b2aafa 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -114,6 +114,7 @@ # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS # define BOOST_NO_USING_TEMPLATE +# define BOOST_SP_NO_SP_CONVERTIBLE // Temporary workaround #define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 8d834b0e..36a70299 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -42,6 +42,7 @@ # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member +# define BOOST_SP_NO_SP_CONVERTIBLE // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS From 2a9759c96b88f5ec1922c90572ec05b473c973c5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 24 Jun 2009 12:16:31 +0000 Subject: [PATCH 080/435] Fixes #3214. [SVN r54300] --- include/boost/config/compiler/metrowerks.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index f32e8ba0..e1e9329c 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -39,7 +39,7 @@ // the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last // tested version *only*: -# if(__MWERKS__ <= 0x3206) || !defined(BOOST_STRICT_CONFIG) // 9.5 +# if(__MWERKS__ <= 0x3207) || !defined(BOOST_STRICT_CONFIG) // 9.6 # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_IS_ABSTRACT # endif @@ -73,6 +73,8 @@ # define BOOST_COMPILER_VERSION 9.4 # elif __MWERKS__ == 0x3206 # define BOOST_COMPILER_VERSION 9.5 +# elif __MWERKS__ == 0x3207 +# define BOOST_COMPILER_VERSION 9.6 # else # define BOOST_COMPILER_VERSION __MWERKS__ # endif From a04de0754288891351a9ceed4a5832fb99174896 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 6 Jul 2009 08:35:54 +0000 Subject: [PATCH 081/435] Fix last known version number. [SVN r54705] --- include/boost/config/compiler/vacpp.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 165408dd..b526a6b0 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -47,7 +47,7 @@ #endif // // last known and checked version is 600: -#if (__IBMCPP__ > 600) +#if (__IBMCPP__ > 1010) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # endif From 714548f437f9f88df62f78b345455c53823a6620 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 24 Jul 2009 15:46:01 +0000 Subject: [PATCH 082/435] =?UTF-8?q?gcc=204.4.1=20fixed=20scoped=20enum=20b?= =?UTF-8?q?ug=20so=20don't=20define=20BOOST=5FNO=5FSCOPED=5FENUMS=20(Fran?= =?UTF-8?q?=C3=A7ois=20Barel)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [SVN r55145] --- include/boost/config/compiler/gcc.hpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 94653c89..705ff1b8 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -109,9 +109,6 @@ #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS -// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS until it -// gets fixed. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 -#define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later @@ -152,6 +149,14 @@ # define BOOST_NO_UNICODE_LITERALS #endif +// C++0x features in 4.4.1 and later +// +#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40401) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS before 4.4.1 +// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 +# define BOOST_NO_SCOPED_ENUMS +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ From bc468c0c2afc5f667be4a40cbee9441a9784b34b Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Sun, 26 Jul 2009 00:49:56 +0000 Subject: [PATCH 083/435] Copyrights on CMakeLists.txt to keep them from clogging up the inspect reports. This is essentially the same commit as r55095 on the release branch. [SVN r55159] --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82b6fc02..09333271 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,3 +1,9 @@ +# +# Copyright Troy D. Straszheim +# +# Distributed under the Boost Software License, Version 1.0. +# See http://www.boost.org/LICENSE_1_0.txt +# #---------------------------------------------------------------------------- # This file was automatically generated from the original CMakeLists.txt file # Add a variable to hold the headers for the library From 17114cb4a309584bc0b08a1e95413545b2a47f05 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 2 Aug 2009 14:00:59 +0000 Subject: [PATCH 084/435] Add BOOST_NO_SFINAE_EXPR and BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS (Mathias Gaunard) [SVN r55361] --- doc/macro_reference.qbk | 6 +++ include/boost/config/compiler/borland.hpp | 2 + include/boost/config/compiler/codegear.hpp | 2 + include/boost/config/compiler/common_edg.hpp | 2 + include/boost/config/compiler/digitalmars.hpp | 1 + include/boost/config/compiler/gcc.hpp | 16 ++++++-- include/boost/config/compiler/hp_acc.hpp | 2 + include/boost/config/compiler/metrowerks.hpp | 2 + include/boost/config/compiler/mpw.hpp | 2 + include/boost/config/compiler/pgi.hpp | 2 + include/boost/config/compiler/sunpro_cc.hpp | 2 + include/boost/config/compiler/vacpp.hpp | 2 + include/boost/config/compiler/visualc.hpp | 2 + test/all/Jamfile.v2 | 8 +++- ...oost_no_function_template_default_args.ipp | 38 +++++++++++++++++++ test/boost_no_sfinae_expr.ipp | 37 ++++++++++++++++++ test/config_info.cpp | 4 ++ test/config_test.cpp | 22 ++++++++++- ...no_function_template_default_args_fail.cpp | 37 ++++++++++++++++++ ...no_function_template_default_args_pass.cpp | 37 ++++++++++++++++++ test/no_sfinae_expr_fail.cpp | 37 ++++++++++++++++++ test/no_sfinae_expr_pass.cpp | 37 ++++++++++++++++++ 22 files changed, 295 insertions(+), 5 deletions(-) create mode 100644 test/boost_no_function_template_default_args.ipp create mode 100644 test/boost_no_sfinae_expr.ipp create mode 100644 test/no_function_template_default_args_fail.cpp create mode 100644 test/no_function_template_default_args_pass.cpp create mode 100644 test/no_sfinae_expr_fail.cpp create mode 100644 test/no_sfinae_expr_pass.cpp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 8482cd78..5404e2bf 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -204,6 +204,9 @@ of an object is not supported. The compiler does not support the "Substitution Failure Is Not An Error" meta-programming idiom. ]] +[[`BOOST_NO_SFINAE_EXPR`][Compiler][ +The compiler does not support usage of SFINAE with arbitrary expressions. +]] [[`BOOST_NO_STD_ALLOCATOR`][Standard library][ The C++ standard library does not provide a standards conforming `std::allocator`. @@ -580,6 +583,9 @@ explicit conversion operators (`explicit operator T()`). [[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support explicit instantiation declarations for templates (`explicit template`). ]] +[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support +default template arguments for function templates. +]] [[`BOOST_NO_INITIALIZER_LISTS`][ The C++ compiler does not support C++0x initializer lists. ]] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 47b2aafa..91f064c6 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -168,12 +168,14 @@ #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS // UTF-8 still not supported #define BOOST_NO_VARIADIC_TEMPLATES diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 36a70299..3915cd54 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -81,11 +81,13 @@ #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 75c2f57f..9dc4cef8 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -75,11 +75,13 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 3818f1ad..a01b4c28 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -75,6 +75,7 @@ #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 705ff1b8..d3aee27a 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -104,7 +104,6 @@ // C++0x features not implemented in any GCC version // #define BOOST_NO_CONSTEXPR -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR @@ -123,6 +122,7 @@ # define BOOST_HAS_VARIADIC_TMPL #else # define BOOST_NO_DECLTYPE +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS # define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_STATIC_ASSERT @@ -149,6 +149,10 @@ # define BOOST_NO_UNICODE_LITERALS #endif +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +# define BOOST_NO_SFINAE_EXPR +#endif + // C++0x features in 4.4.1 and later // #if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40401) || !defined(__GXX_EXPERIMENTAL_CXX0X__) @@ -157,6 +161,12 @@ # define BOOST_NO_SCOPED_ENUMS #endif +// C++0x features in 4.5.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ @@ -177,8 +187,8 @@ # error "Compiler not configured - please reconfigure" #endif // -// last known and checked version is 4.3 (Pre-release): -#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 3)) +// last known and checked version is 4.4 (Pre-release): +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4)) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index a24fc16b..98e7772a 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -103,12 +103,14 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index e1e9329c..aeba7f80 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -103,11 +103,13 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index ac536c00..4db14dde 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -51,12 +51,14 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 64650cea..e40553ef 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -43,12 +43,14 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index c4407232..f5184887 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -96,12 +96,14 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index b526a6b0..01956d3a 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -72,11 +72,13 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 2c3a2adf..bd5731f0 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -168,10 +168,12 @@ #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index e7d6915c..629da93e 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 Thu May 21 11:08:48 2009 +# This file was automatically generated on Sun Aug 02 08:26:00 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -319,6 +319,9 @@ test-suite "BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS" : test-suite "BOOST_NO_EXTERN_TEMPLATE" : [ run ../no_extern_template_pass.cpp ] [ compile-fail ../no_extern_template_fail.cpp ] ; +test-suite "BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS" : +[ run ../no_function_template_default_args_pass.cpp ] +[ compile-fail ../no_function_template_default_args_fail.cpp ] ; test-suite "BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS" : [ run ../no_function_type_spec_pass.cpp ] [ compile-fail ../no_function_type_spec_fail.cpp ] ; @@ -418,6 +421,9 @@ test-suite "BOOST_NO_SCOPED_ENUMS" : test-suite "BOOST_NO_SFINAE" : [ run ../no_sfinae_pass.cpp ] [ compile-fail ../no_sfinae_fail.cpp ] ; +test-suite "BOOST_NO_SFINAE_EXPR" : +[ run ../no_sfinae_expr_pass.cpp ] +[ compile-fail ../no_sfinae_expr_fail.cpp ] ; test-suite "BOOST_NO_STRINGSTREAM" : [ run ../no_sstream_pass.cpp ] [ compile-fail ../no_sstream_fail.cpp ] ; diff --git a/test/boost_no_function_template_default_args.ipp b/test/boost_no_function_template_default_args.ipp new file mode 100644 index 00000000..686d44ce --- /dev/null +++ b/test/boost_no_function_template_default_args.ipp @@ -0,0 +1,38 @@ +// (C) Copyright Mathias Gaunard 2009. +// 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. + +// MACRO: BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +// TITLE: Default template arguments for function templates +// DESCRIPTION: Default template arguments for function templates are not supported. + +namespace boost_no_function_template_default_args +{ + +template +T foo() +{ + return 0; +} + +template +bool is_same(T, U) +{ + return false; +} + +template +bool is_same(T, T) +{ + return true; +} + +int test() +{ + return !is_same(foo<>(), 0) || is_same(foo<>(), 0L); +} + +} // namespace boost_no_function_template_default_args diff --git a/test/boost_no_sfinae_expr.ipp b/test/boost_no_sfinae_expr.ipp new file mode 100644 index 00000000..c3ce89e8 --- /dev/null +++ b/test/boost_no_sfinae_expr.ipp @@ -0,0 +1,37 @@ +// (C) Copyright Mathias Gaunard 2009. +// 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. + +// MACRO: BOOST_NO_SFINAE_EXPR +// TITLE: SFINAE for expressions +// DESCRIPTION: SFINAE for expressions not supported. + +namespace boost_no_sfinae_expr +{ + +template +struct has_foo +{ + typedef char NotFound; + struct Found { char x[2]; }; + + template struct dummy {}; + + template static Found test(dummy< sizeof((*(X*)0).foo(), 0) >*); + template static NotFound test( ... ); + + static const bool value = (sizeof(Found) == sizeof(test(0))); +}; + +struct test1 {}; +struct test2 { void foo(); }; + +int test() +{ + return has_foo::value || !has_foo::value; +} + +} // namespace boost_no_sfinae_expr diff --git a/test/config_info.cpp b/test/config_info.cpp index 383412cb..55753326 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1000,6 +1000,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS); PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE); + PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION); @@ -1031,6 +1032,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_RVALUE_REFERENCES); PRINT_MACRO(BOOST_NO_SCOPED_ENUMS); PRINT_MACRO(BOOST_NO_SFINAE); + PRINT_MACRO(BOOST_NO_SFINAE_EXPR); PRINT_MACRO(BOOST_NO_STATIC_ASSERT); PRINT_MACRO(BOOST_NO_STDC_NAMESPACE); PRINT_MACRO(BOOST_NO_STD_ALLOCATOR); @@ -1073,6 +1075,8 @@ void print_boost_macros() + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index bc76fe54..98d0ef4f 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Thu May 21 11:08:48 2009 +// This file was automatically generated on Sun Aug 02 08:26:00 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -262,6 +262,11 @@ namespace boost_no_explicit_function_template_arguments = empty_boost; #else namespace boost_no_extern_template = empty_boost; #endif +#ifndef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +namespace boost_no_function_template_default_args = empty_boost; +#endif #ifndef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS #include "boost_no_function_type_spec.ipp" #else @@ -427,6 +432,11 @@ namespace boost_no_scoped_enums = empty_boost; #else namespace boost_no_sfinae = empty_boost; #endif +#ifndef BOOST_NO_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +namespace boost_no_sfinae_expr = empty_boost; +#endif #ifndef BOOST_NO_STRINGSTREAM #include "boost_no_sstream.ipp" #else @@ -1331,6 +1341,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_EXTERN_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_function_template_default_args::test()) + { + std::cerr << "Failed test for BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_function_type_specializations::test()) { std::cerr << "Failed test for BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1496,6 +1511,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_sfinae_expr::test()) + { + std::cerr << "Failed test for BOOST_NO_SFINAE_EXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_stringstream::test()) { std::cerr << "Failed test for BOOST_NO_STRINGSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_function_template_default_args_fail.cpp b/test/no_function_template_default_args_fail.cpp new file mode 100644 index 00000000..bff346d4 --- /dev/null +++ b/test/no_function_template_default_args_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// 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_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This file should not compile, if it does then +// BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS should not be defined. +// See file boost_no_function_template_default_args.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_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_default_args::test(); +} + diff --git a/test/no_function_template_default_args_pass.cpp b/test/no_function_template_default_args_pass.cpp new file mode 100644 index 00000000..b6b27e6f --- /dev/null +++ b/test/no_function_template_default_args_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// 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_FUNCTION_TEMPLATE_DEFAULT_ARGS +// This file should compile, if it does not then +// BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS should be defined. +// See file boost_no_function_template_default_args.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_FUNCTION_TEMPLATE_DEFAULT_ARGS +#include "boost_no_function_template_default_args.ipp" +#else +namespace boost_no_function_template_default_args = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_function_template_default_args::test(); +} + diff --git a/test/no_sfinae_expr_fail.cpp b/test/no_sfinae_expr_fail.cpp new file mode 100644 index 00000000..e7c8b03d --- /dev/null +++ b/test/no_sfinae_expr_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// 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_SFINAE_EXPR +// This file should not compile, if it does then +// BOOST_NO_SFINAE_EXPR should not be defined. +// See file boost_no_sfinae_expr.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_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae_expr::test(); +} + diff --git a/test/no_sfinae_expr_pass.cpp b/test/no_sfinae_expr_pass.cpp new file mode 100644 index 00000000..fc87d786 --- /dev/null +++ b/test/no_sfinae_expr_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Aug 02 08:25:59 2009 +// 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_SFINAE_EXPR +// This file should compile, if it does not then +// BOOST_NO_SFINAE_EXPR should be defined. +// See file boost_no_sfinae_expr.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_SFINAE_EXPR +#include "boost_no_sfinae_expr.ipp" +#else +namespace boost_no_sfinae_expr = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_sfinae_expr::test(); +} + From e201687ac45e184c83906fda61be91673e1cce95 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 Aug 2009 09:13:09 +0000 Subject: [PATCH 085/435] Fixes #2935. Add new config macro BOOST_MSVC_FULL_VER, and updated type_traits to make use of it. [SVN r55429] --- include/boost/config/compiler/visualc.hpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index bd5731f0..fd21f26b 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -14,6 +14,12 @@ #define BOOST_MSVC _MSC_VER +#if _MSC_FULL_VER > 100000000 +# define BOOST_MSVC_FULL_VER _MSC_FULL_VER +#else +# define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10) +#endif + // turn off the warnings before we #include anything #pragma warning( disable : 4503 ) // warning: decorated name length exceeded From d7c99eb56af0de61adeb2d9c090bfadb1ba9dd33 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 Aug 2009 09:18:01 +0000 Subject: [PATCH 086/435] Added docs for BOOST_MSVC_FULL_VER. [SVN r55430] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 68 ++++++++++++++++--- .../guidelines_for_boost_authors.html | 4 +- doc/html/boost_config/rationale.html | 4 +- doc/html/index.html | 8 +-- doc/macro_reference.qbk | 8 ++- 6 files changed, 75 insertions(+), 21 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index b02bda6a..568cc3a1 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,8 +3,8 @@ Acknowledgements - - + + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index fed7bdac..e781a035 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,8 +3,8 @@ Boost Macro Reference - - + + @@ -20,8 +20,7 @@
- -PrevUpHomeNext +PrevUpHomeNext

@@ -797,6 +796,23 @@ + +

+ BOOST_NO_SFINAE_EXPR +

+ + +

+ Compiler +

+ + +

+ The compiler does not support usage of SFINAE with arbitrary expressions. +

+ + +

BOOST_NO_STD_ALLOCATOR @@ -2428,8 +2444,7 @@

- - BOOST_NO_0X_HDR_THREAD + BOOST_NO_0X_HDR_THREAD

@@ -2643,6 +2658,19 @@ + +

+ BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +

+ + +

+ The compiler does not support default template arguments for function + templates. +

+ + +

BOOST_NO_INITIALIZER_LISTS @@ -3192,7 +3220,28 @@

Defined if the compiler is really Microsoft Visual C++, as opposed - to one of the many other compilers that also define _MSC_VER. + to one of the many other compilers that also define _MSC_VER. Has the same value as + _MSC_VER. +

+ + + + +

+ BOOST_MSVC_FULL_VER +

+ + +

+ <boost/config.hpp> +

+ + +

+ Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes + only has 8 digits), the macro has the form VVMMPPPPP where VV is + the major version number, MM is the minor version number, and PPPPP + is the compiler build number.

@@ -3493,8 +3542,7 @@
- -PrevUpHomeNext +PrevUpHomeNext
- \ No newline at end of file + diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 2e16141f..3468a3eb 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,8 +3,8 @@ Guidelines for Boost Authors - - + + diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index cdd610f0..5429ea82 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,8 +3,8 @@ Rationale - - + + diff --git a/doc/html/index.html b/doc/html/index.html index 3cc94e38..a6326646 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,8 +3,8 @@ Boost.Config - - + + @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: May 15, 2009 at 15:05:51 GMT

Last revised: August 06, 2009 at 09:16:56 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 5404e2bf..11493abf 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -791,7 +791,13 @@ integral constant expressions. ]] [[`BOOST_MSVC`][``][ Defined if the compiler is really Microsoft Visual C++, as opposed to one -of the many other compilers that also define `_MSC_VER`. +of the many other compilers that also define `_MSC_VER`. Has the same value as +_MSC_VER. +]] +[[`BOOST_MSVC_FULL_VER`][``][ +Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes only has 8 digits), +the macro has the form VVMMPPPPP where VV is the major version number, MM is the minor version number, and +PPPPP is the compiler build number. ]] [[`BOOST_INTEL`][``][ Defined if the compiler is an Intel compiler, takes the same value as the From e40b9c07c0c1aaad49101c9ece28e2a224554b94 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 Aug 2009 09:22:02 +0000 Subject: [PATCH 087/435] Fixes #3181. [SVN r55431] --- include/boost/config/stdlib/dinkumware.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index addf3357..ab770599 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -55,8 +55,10 @@ # define BOOST_HAS_MACRO_USE_FACET # ifndef _CPPLIB_VER // Updated Dinkum library defines this, and provides - // its own min and max definitions. -# define BOOST_NO_STD_MIN_MAX + // its own min and max definitions, as does MTA version. +# ifndef __MTA__ +# define BOOST_NO_STD_MIN_MAX +# endif # define BOOST_NO_MS_INT64_NUMERIC_LIMITS # endif #endif From 40979e665170baca3222b55ab2dff6ffda7f6dcf Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 28 Aug 2009 18:20:44 +0000 Subject: [PATCH 088/435] Set release number to 1.41.0 [SVN r55842] --- 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 49cfe766..ad343591 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 104000 +#define BOOST_VERSION 104100 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_40" +#define BOOST_LIB_VERSION "1_41" #endif From 80947fe56062412a5c0d1a654091899dda72c77b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 1 Sep 2009 17:16:13 +0000 Subject: [PATCH 089/435] Update Intel version check. [SVN r55959] --- include/boost/config/compiler/intel.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 1ab029ed..531242e9 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -99,7 +99,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1100) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -159,7 +159,7 @@ template<> struct assert_intrinsic_wchar_t {}; // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1100) +#if (BOOST_INTEL_CXX_VERSION > 1110) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) From b013e0cb2c3662e97ffe6d08d9492aadea7a7a69 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 3 Sep 2009 16:30:59 +0000 Subject: [PATCH 090/435] Try and fix Sun-GCC failure by linking to -lrt. [SVN r55998] --- test/Jamfile.v2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index f4c47af0..8d2bdb21 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -18,7 +18,7 @@ if $(is_unix) switch $(osname) { - case "Sun*" : OTHERFLAGS = "-lpthread" ; + case "Sun*" : OTHERFLAGS = "-lpthread -lrt" ; case "*BSD*" : OTHERFLAGS = "-lpthread" ; } } From e1bfdd03e46f37e639b8cedb386159b5e3528550 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Thu, 10 Sep 2009 11:14:23 +0000 Subject: [PATCH 091/435] Fix #3429 cut-and-paste snafu [SVN r56133] --- test/boost_no_deleted_functions.ipp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/boost_no_deleted_functions.ipp b/test/boost_no_deleted_functions.ipp index 043fcda0..072e0f95 100644 --- a/test/boost_no_deleted_functions.ipp +++ b/test/boost_no_deleted_functions.ipp @@ -7,10 +7,10 @@ // See http://www.boost.org/libs/config for more information. // MACRO: BOOST_NO_DELETED_FUNCTIONS -// TITLE: C++0x delete functions unavailable -// DESCRIPTION: The compiler does not support C++0x delete functions +// TITLE: C++0x =delete functions unavailable +// DESCRIPTION: The compiler does not support C++0x =delete functions -namespace boost_no_constexpr { +namespace boost_no_deleted_functions { struct foo { foo() = delete; From 808dc4fec624e29117e66fdd66f7e893b2d9fb51 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 18 Sep 2009 10:43:09 +0000 Subject: [PATCH 092/435] Add Open64 detection macros. [SVN r56294] --- test/config_info.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 55753326..9563f931 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -305,6 +305,8 @@ void print_compiler_macros() PRINT_MACRO(__QNXNTO__); PRINT_MACRO(__QNX__); PRINT_MACRO(_NTO_VERSION); + PRINT_MACRO(__OPEN64__); + PRINT_MACRO(__open64); } void print_stdlib_macros() From 44945314ec6198b80d4209588c3437866108db9c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 18 Sep 2009 10:43:57 +0000 Subject: [PATCH 093/435] Try and fix Open64 Boost.Config failures: Open64 is not really gcc! [SVN r56295] --- include/boost/config/compiler/gcc.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index d3aee27a..396a6055 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -64,6 +64,9 @@ // All problems to gcc-3.x and earlier here: // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP +# ifdef __OPEN64__ +# define BOOST_NO_IS_ABSTRACT +# endif #endif #ifndef __EXCEPTIONS From f05b7f57d5ee2311d247df6e72475ba29a042d01 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 11 Oct 2009 17:19:53 +0000 Subject: [PATCH 094/435] config: define BOOST_NO_UNICODE_LITERALS for all gcc versions - their C++0x web page was wrong; there is no support yet. Also correct test code. [SVN r56716] --- include/boost/config/compiler/gcc.hpp | 2 +- test/all/Jamfile.v2 | 2 +- test/boost_no_unicode_literals.ipp | 7 +++---- test/config_info.cpp | 1 + test/config_test.cpp | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 396a6055..6cae94ca 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -112,6 +112,7 @@ #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_TEMPLATE_ALIASES +#define BOOST_NO_UNICODE_LITERALS // C++0x features in 4.3.n and later // @@ -149,7 +150,6 @@ # define BOOST_NO_DELETED_FUNCTIONS # define BOOST_NO_INITIALIZER_LISTS # define BOOST_NO_SCOPED_ENUMS -# define BOOST_NO_UNICODE_LITERALS #endif #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 629da93e..4b510a83 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 Sun Aug 02 08:26:00 2009 +# This file was automatically generated on Sun Oct 11 13:04:18 2009 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the diff --git a/test/boost_no_unicode_literals.ipp b/test/boost_no_unicode_literals.ipp index 247daf49..6c949cfb 100644 --- a/test/boost_no_unicode_literals.ipp +++ b/test/boost_no_unicode_literals.ipp @@ -8,15 +8,14 @@ // MACRO: BOOST_NO_UNICODE_LITERALS // TITLE: C++0x unicode literals unavailable -// DESCRIPTION: The compiler does not support C++0x unicode literals +// DESCRIPTION: The compiler does not support C++0x Unicode literals (N2442) namespace boost_no_unicode_literals { + int test() { - const char* u8 = u8""; - const char16_t* u16 = u""; - const char32_t* u32 = U""; + const char* c8 = u8""; return 0; } diff --git a/test/config_info.cpp b/test/config_info.cpp index 9563f931..3b781432 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1079,6 +1079,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 98d0ef4f..81aee7c4 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Aug 02 08:26:00 2009 +// This file was automatically generated on Sun Oct 11 13:04:18 2009 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the From 69bf6c4ad6a3f026e72d9e4190e815464c40a1f0 Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Sat, 17 Oct 2009 02:07:38 +0000 Subject: [PATCH 095/435] rm cmake from trunk. I'm not entirely sure this is necessary to satisfy the inspect script, but I'm not taking any chances, and it is easy to put back [SVN r56942] --- CMakeLists.txt | 28 ---------------------------- module.cmake | 0 test/CMakeLists.txt | 37 ------------------------------------- 3 files changed, 65 deletions(-) delete mode 100644 CMakeLists.txt delete mode 100644 module.cmake delete mode 100644 test/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 09333271..00000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -# -# Copyright Troy D. Straszheim -# -# Distributed under the Boost Software License, Version 1.0. -# See http://www.boost.org/LICENSE_1_0.txt -# -#---------------------------------------------------------------------------- -# This file was automatically generated from the original CMakeLists.txt file -# Add a variable to hold the headers for the library -set (lib_headers - config.hpp - config -) - -# Add a library target to the build system -boost_library_project( - config - # SRCDIRS - TESTDIRS test - HEADERS ${lib_headers} - # DOCDIRS - DESCRIPTION "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users." - MODULARIZED - AUTHORS "John Maddock " - # MAINTAINERS -) - - diff --git a/module.cmake b/module.cmake deleted file mode 100644 index e69de29b..00000000 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt deleted file mode 100644 index 1e319930..00000000 --- a/test/CMakeLists.txt +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright John Maddock and Douglas Gregor. -# 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) -if(MSVC) - set(BOOST_CONFIG_MSVC_STATIC_OPTIONS STATIC STATIC_RUNTIME) -endif(MSVC) -if(BORLAND) - set(BOOST_CONFIG_BORLAND_STATIC_OPTIONS STATIC STATIC_RUNTIME) -endif(BORLAND) - -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(BOOST_CONFIG_STATIC_THREAD_LIBS LINK_LIBS pthread rt) -endif(CMAKE_SYSTEM_NAME MATCHES "Linux") - -boost_additional_test_dependencies(config BOOST_DEPENDS test) - -boost_test_run(config_test_threaded config_test.cpp - EXTRA_OPTIONS MULTI_THREADED) - -boost_test_run(config_test - EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS} - ${BOOST_CONFIG_STATIC_THREAD_LIBS}) -boost_test_run(config_info_threaded config_info.cpp - EXTRA_OPTIONS MULTI_THREADED) -boost_test_run(config_info - EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS}) -boost_test_run(math_info - EXTRA_OPTIONS ${BOOST_CONFIG_BORLAND_STATIC_OPTIONS}) - - -boost_test_run(limits_test DEPENDS boost_test_exec_monitor) -boost_test_run(abi_test abi/abi_test.cpp abi/main.cpp) - -# TODO: config_link_test -boost_test_compile_fail(test_thread_fail1 threads/test_thread_fail1.cpp) -boost_test_compile_fail(test_thread_fail2 threads/test_thread_fail2.cpp) \ No newline at end of file From 2dc1512b9bba916e9098ae2f5724c4f2739df258 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 22 Nov 2009 16:38:05 +0000 Subject: [PATCH 096/435] Fix preprocessor logic for long long support. Fixes #3657. Fixes #3568. [SVN r57843] --- 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 fd21f26b..990901f0 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -125,7 +125,7 @@ #if (_MSC_VER >= 1200) # define BOOST_HAS_MS_INT64 #endif -#if (_MSC_VER >= 1310) && defined(_MSC_EXTENSIONS) +#if (_MSC_VER >= 1310) && (defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1500)) # define BOOST_HAS_LONG_LONG #else # define BOOST_NO_LONG_LONG From 389cd2ba6908b7c270a405c40969170d614972dc Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 27 Nov 2009 14:00:31 +0000 Subject: [PATCH 097/435] 1.42.0 prep [SVN r57969] --- 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 ad343591..e95ff85e 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 104100 +#define BOOST_VERSION 104200 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_41" +#define BOOST_LIB_VERSION "1_42" #endif From 6056bfabcbb26f355627e413565fed0a1a0bfb3e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 30 Nov 2009 13:47:41 +0000 Subject: [PATCH 098/435] Update test for BOOST_NO_INTEGRAL_INT64_T. Set define for Borland/Codegear compilers. [SVN r58055] --- include/boost/config/compiler/borland.hpp | 2 +- include/boost/config/compiler/codegear.hpp | 1 + test/boost_no_integral_int64_t.ipp | 4 +--- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 91f064c6..6a7b988d 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -66,7 +66,6 @@ // Borland C++ Builder 6 and below: #if (__BORLANDC__ <= 0x564) -# define BOOST_NO_INTEGRAL_INT64_T # ifdef NDEBUG // fix broken so that Boost.test works: @@ -121,6 +120,7 @@ #endif // Borland C++ Builder 2008 and below: +# define BOOST_NO_INTEGRAL_INT64_T # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 3915cd54..5607156a 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -30,6 +30,7 @@ // CodeGear C++ Builder 2009 #if (__CODEGEARC__ <= 0x613) +# define BOOST_NO_INTEGRAL_INT64_T # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/test/boost_no_integral_int64_t.ipp b/test/boost_no_integral_int64_t.ipp index 3984808d..eb11640a 100644 --- a/test/boost_no_integral_int64_t.ipp +++ b/test/boost_no_integral_int64_t.ipp @@ -43,9 +43,7 @@ __extension__ int test() { - llt m; - (void)m; - return 0; + return llt::value != (1uLL << 50); } } From 9600237dca7ef5626946a4ee4c9ddf27886e9e25 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 5 Dec 2009 13:22:45 +0000 Subject: [PATCH 099/435] Start to fix up codegear 2010 support... this could take a while. [SVN r58155] --- include/boost/config/compiler/codegear.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 5607156a..57fb76a9 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -31,7 +31,6 @@ // CodeGear C++ Builder 2009 #if (__CODEGEARC__ <= 0x613) # define BOOST_NO_INTEGRAL_INT64_T -# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_PRIVATE_IN_AGGREGATE @@ -41,10 +40,14 @@ // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member # define BOOST_SP_NO_SP_CONVERTIBLE +#endif +// CodeGear C++ Builder 2010 +#if (__CODEGEARC__ <= 0x620) +# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type +# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS @@ -60,7 +63,6 @@ # endif #endif - // // C++0x macros: // From dac1a5bf21a68986c26a964498966e2a5274b243 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 7 Dec 2009 12:01:24 +0000 Subject: [PATCH 100/435] More Codegear 2010 changes. [SVN r58213] --- include/boost/config/compiler/codegear.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 57fb76a9..f94eeac5 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -32,7 +32,6 @@ #if (__CODEGEARC__ <= 0x613) # define BOOST_NO_INTEGRAL_INT64_T # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_PRIVATE_IN_AGGREGATE # define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE @@ -40,7 +39,6 @@ // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member # define BOOST_SP_NO_SP_CONVERTIBLE #endif @@ -48,6 +46,8 @@ #if (__CODEGEARC__ <= 0x620) # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS +# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS From 62ed60c78036496ab65f97dbecddca6c65ab1bb7 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 10 Dec 2009 09:42:01 +0000 Subject: [PATCH 101/435] Still trying to get the Codegear tests to pass... [SVN r58264] --- include/boost/config/compiler/codegear.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index f94eeac5..df1e89e4 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -35,7 +35,6 @@ # define BOOST_NO_PRIVATE_IN_AGGREGATE # define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -# define BOOST_NO_USING_TEMPLATE // we shouldn't really need this - but too many things choke // without it, this needs more investigation: # define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS @@ -48,6 +47,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member +# define BOOST_NO_USING_TEMPLATE // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS From 1e287543f2541b420e3ab80366d31500ab7f6aac Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 12 Dec 2009 10:00:03 +0000 Subject: [PATCH 102/435] Another Codegear config fix. [SVN r58316] --- include/boost/config/compiler/codegear.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index df1e89e4..0e24018e 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -33,7 +33,6 @@ # define BOOST_NO_INTEGRAL_INT64_T # define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS # define BOOST_NO_PRIVATE_IN_AGGREGATE -# define BOOST_NO_TWO_PHASE_NAME_LOOKUP # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE // we shouldn't really need this - but too many things choke // without it, this needs more investigation: @@ -48,6 +47,7 @@ # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS # define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member # define BOOST_NO_USING_TEMPLATE +# define BOOST_NO_TWO_PHASE_NAME_LOOKUP // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS From 19a43a6de4355d36df56af67cee984a1c25d9cc8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 14 Dec 2009 12:34:47 +0000 Subject: [PATCH 103/435] Set last known checked version. [SVN r58377] --- include/boost/config/compiler/codegear.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 0e24018e..698624ec 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -19,8 +19,8 @@ #endif // // versions check: -// last known and checked version is 0x610 -#if (__CODEGEARC__ > 0x613) +// last known and checked version is 0x620 +#if (__CODEGEARC__ > 0x620) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From ca7bd18565b3359770baa7658a5982b276005e61 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Thu, 21 Jan 2010 19:57:48 +0000 Subject: [PATCH 104/435] Sync 4.5 C++0x macros with current 4.5 snapshot [SVN r59201] --- include/boost/config/compiler/gcc.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 6cae94ca..fe2c52ea 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -108,11 +108,8 @@ // #define BOOST_NO_CONSTEXPR #define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR -#define BOOST_NO_RAW_LITERALS #define BOOST_NO_TEMPLATE_ALIASES -#define BOOST_NO_UNICODE_LITERALS // C++0x features in 4.3.n and later // @@ -168,6 +165,9 @@ // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_LAMBDAS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS #endif // ConceptGCC compiler: From 3f50fc1231392d23cdf75224f000b140f4ec25e1 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Thu, 21 Jan 2010 21:08:22 +0000 Subject: [PATCH 105/435] Clarify determining if macro tests pass [SVN r59206] --- doc/guidelines.qbk | 18 ++++--- .../guidelines_for_boost_authors.html | 52 +++++++++++-------- 2 files changed, 41 insertions(+), 29 deletions(-) diff --git a/doc/guidelines.qbk b/doc/guidelines.qbk index d1d78fa6..83f6418e 100644 --- a/doc/guidelines.qbk +++ b/doc/guidelines.qbk @@ -112,8 +112,8 @@ filename limit though. You will also need to provide a function prototype "`int test()`" that is declared in a namespace with the same name as the macro, but in all lower case, and which returns zero on success: - namespace boost_no_foo { + namespace boost_no_foo { int test() { // test code goes here: @@ -126,14 +126,18 @@ but in all lower case, and which returns zero on success: Once the test code is in place in libs/config/test, updating the configuration test system proceeds as: -* cd into `libs/config/tools` and run `bjam` : this generates the `.cpp` +* cd into `libs/config/tools` and run `bjam`. This generates the `.cpp` file test cases from the `.ipp` file, updates the -libs/config/test/all/Jamfile.v2, `config_test.cpp` and `config_info.cpp`. -* cd into `libs/config/test/all` and run `bjam `['MACRONAME` compiler-list`] : where +libs/config/test/all/Jamfile.v2, `config_test.cpp` and `config_info.cpp`.[br][br] + +* cd into `libs/config/test/all` and run `bjam `['MACRONAME` compiler-list`], where ['MACRONAME] is the name of the new macro, and ['`compiler-list`] is a space separated list of -compilers to test with. You should see the tests pass with those compilers -that don't have the defect, and fail with those that do. -* cd into `libs/config/test` and run `bjam config_info config_test `['`compiler-list`] : +compilers to test with.[br][br] +The xxx_pass_test and the xxx_fail_test [*should both report `**passed**`].[br][br] +If ['MACRONAME] is not defined when it should be defined, xxx_pass_test will not report `**passed**`. +If ['MACRONAME] is defined when it should not be defined, xxx_fail_test will not report `**passed**`.[br][br] + +* cd into `libs/config/test` and run `bjam config_info config_test `['`compiler-list`]. `config_info` should build and run cleanly for all the compilers in ['`compiler-list`] while `config_test` should fail for those that have the defect, and pass for those that do not. diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 3468a3eb..8e45bf79 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -1,10 +1,11 @@ - -Guidelines for Boost Authors + +Guidelines for + Boost Authors - - + + @@ -24,7 +25,8 @@
@@ -105,7 +107,8 @@

@@ -184,7 +187,8 @@

@@ -220,7 +224,6 @@ on success:

namespace boost_no_foo {
-
 int test()
 {
     // test code goes here:
@@ -236,24 +239,27 @@
       

  • - cd into libs/config/tools and run bjam - : this generates the .cpp + cd into libs/config/tools and run bjam. + This generates the .cpp file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, - config_test.cpp and config_info.cpp. -
  • + config_test.cpp and config_info.cpp.

    +
  • cd into libs/config/test/all and run bjam - MACRONAME compiler-list - : where MACRONAME is the name of the new macro, and + MACRONAME compiler-list, + where MACRONAME is the name of the new macro, and compiler-list is a space separated - list of compilers to test with. You should see the tests pass with those - compilers that don't have the defect, and fail with those that do. -
  • + list of compilers to test with.

    The xxx_pass_test and the + xxx_fail_test should both report **passed**.

    If MACRONAME is not defined when it should + be defined, xxx_pass_test will not report **passed**. + If MACRONAME is defined when it should not be defined, + xxx_fail_test will not report **passed**.

    +
  • cd into libs/config/test and run bjam config_info config_test - compiler-list - : config_info should build + compiler-list. + config_info should build and run cleanly for all the compilers in compiler-list while config_test should fail for those that have the defect, and pass for those that do not. @@ -283,7 +289,8 @@
-
- + + + + @@ -2840,7 +2825,7 @@

-
+

Boost Helper Macros @@ -2856,33 +2841,33 @@

@@ -3180,7 +3165,7 @@

-
+

Boost Informational Macros @@ -3197,255 +3182,275 @@

+ + + + +
+

+ BOOST_WORKAROUND +

+
+

+ This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first +

+
#include <boost/detail/workaround.hpp>
+
+

+ usage is then: +

+
#if BOOST_WORKAROUND(MACRONAME, CONDITION)
+   // workaround code goes here...
+#else
+   // Standard conforming code goes here...
+#endif
+
+

+ where MACRONAME is + a macro that usually describes the version number to be tested against, + and CONDITION is + a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, + <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. +

+

+ The macro can also be used with BOOST_TESTED_AT + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. +

+

+ For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ + unless the macro BOOST_DETECT_OUTDATED_WORKAROUNDS + is defined, in which case evaluates to (__BORLANDC__ <= + 0x590). +

+

+ Note: the ultimate source of documentation + for this macro is in boost/detail/workaround.hpp. +

+

BOOST_DEDUCED_TYPENAME @@ -3534,7 +3581,7 @@ -
@@ -107,8 +105,7 @@

@@ -187,8 +184,7 @@

@@ -289,8 +285,7 @@

diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 5429ea82..59a53ec9 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -1,6 +1,6 @@ - + Rationale @@ -121,7 +121,7 @@

- + + + + + @@ -1292,7 +1291,7 @@

-
+

Macros that describe optional features @@ -1309,898 +1308,882 @@

- - - - -

- Describes the boost version number in XXYYZZ format such that: (BOOST_VERSION + Describes the boost version number in XYYYZZ format such that: (BOOST_VERSION % 100) is the sub-minor version, ((BOOST_VERSION / 100) % 1000) is the minor version, and (BOOST_VERSION / diff --git a/doc/html/index.html b/doc/html/index.html index 0081347c..21dda5c7 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -131,7 +131,7 @@

Boost library users can request support for additional compilers or platforms - by visiting our Tracker + by visiting our Trac and submitting a support request.

@@ -960,7 +960,7 @@
- +

Last revised: February 05, 2010 at 17:46:05 GMT

Last revised: March 02, 2010 at 17:08:14 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 5ffc57e0..3a96512e 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -806,7 +806,7 @@ the only boost macros that should be tested in user code. [[Macro ][Header ][Description ]] [[`BOOST_VERSION`][``][ -Describes the boost version number in XXYYZZ format such that: +Describes the boost version number in XYYYZZ format such that: `(BOOST_VERSION % 100)` is the sub-minor version, `((BOOST_VERSION / 100) % 1000)` is the minor version, and `(BOOST_VERSION / 100000)` is the major version. ]] From 396307d8f58d07114713f81f8e458b0f468599ad Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 2 Mar 2010 17:18:32 +0000 Subject: [PATCH 112/435] Apply patches for nvidia C++ compiler. Fixes #3919. [SVN r60076] --- include/boost/config/compiler/nvcc.hpp | 85 +++++++++++++++++++ .../boost/config/select_compiler_config.hpp | 5 ++ include/boost/config/suffix.hpp | 9 +- 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 include/boost/config/compiler/nvcc.hpp diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp new file mode 100644 index 00000000..7d831af8 --- /dev/null +++ b/include/boost/config/compiler/nvcc.hpp @@ -0,0 +1,85 @@ +// (C) Copyright Eric Jourdanneau, Joel Falcou 2010 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// NVIDIA CUDA C++ compiler setup + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "NVIDIA CUDA C++ Compiler" +#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__ + +// Boost support macro for NVCC +// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks +#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION +#define BOOST_MSVC6_MEMBER_TEMPLATES +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_STDINT_H +#define BOOST_HAS_SIGACTION +#define BOOST_HAS_SCHED_YIELD +#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_HAS_LONG_LONG +#define BOOST_HAS_LOG1P +#define BOOST_HAS_GETTIMEOFDAY +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_DIRENT_H +#define BOOST_HAS_CLOCK_GETTIME +#define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_TEMPLATE_ALIASES +#define BOOST_NO_STD_UNORDERED +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_NULLPTR +#define BOOST_NO_LAMBDAS +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_MS_INT64_NUMERIC_LIMITS +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_EXTERN_TEMPLATE +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DECLTYPE +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_CONCEPTS +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CHAR16_T +#define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_0X_HDR_UNORDERED_SET +#define BOOST_NO_0X_HDR_UNORDERED_MAP +#define BOOST_NO_0X_HDR_TYPE_TRAITS +#define BOOST_NO_0X_HDR_TUPLE +#define BOOST_NO_0X_HDR_THREAD +#define BOOST_NO_0X_HDR_SYSTEM_ERROR +#define BOOST_NO_0X_HDR_REGEX +#define BOOST_NO_0X_HDR_RATIO +#define BOOST_NO_0X_HDR_RANDOM +#define BOOST_NO_0X_HDR_MUTEX +#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +#define BOOST_NO_0X_HDR_INITIALIZER_LIST +#define BOOST_NO_0X_HDR_FUTURE +#define BOOST_NO_0X_HDR_FORWARD_LIST +#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +#define BOOST_NO_0X_HDR_CONDITION_VARIABLE +#define BOOST_NO_0X_HDR_CONCEPTS +#define BOOST_NO_0X_HDR_CODECVT +#define BOOST_NO_0X_HDR_CHRONO +#define BOOST_NO_0X_HDR_ARRAY + diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 9141cd63..792963e2 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -31,6 +31,7 @@ # define BOOST_CXX_IBMCPP 0 # define BOOST_CXX_MSVC 0 # define BOOST_CXX_PGI 0 +# define BOOST_CXX_NVCC 0 // locate which compiler we are using and define @@ -40,6 +41,10 @@ // GCC-XML emulates other compilers, it has to appear first here! # define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp" +#elif defined __CUDACC__ +// NVIDIA CUDA C++ compiler for GPU +# define BOOST_COMPILER_CONFIG "boost/config/compiler/nvcc.hpp" + #elif defined __COMO__ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index fa449869..9e4d0788 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -8,7 +8,7 @@ // Copyright (c) 2002-2003 David Abrahams // Copyright (c) 2003 Gennaro Prota // Copyright (c) 2003 Eric Friedman -// +// Copyright (c) 2010 Eric Jourdanneau, Joel Falcou // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) @@ -596,6 +596,11 @@ namespace boost{ # endif # endif +// +// Set some default values GPU support +// +# ifndef BOOST_GPU_ENABLED +# define BOOST_GPU_ENABLED +# endif #endif - From d657b0116e9201ed90e3d70622e76dcbffea93ab Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 3 Mar 2010 17:22:48 +0000 Subject: [PATCH 113/435] Add Symbian platform config. Fixes #3759. [SVN r60125] --- include/boost/config/platform/symbian.hpp | 94 +++++++++++++++++++ .../boost/config/select_platform_config.hpp | 4 + 2 files changed, 98 insertions(+) create mode 100644 include/boost/config/platform/symbian.hpp diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp new file mode 100644 index 00000000..ad379431 --- /dev/null +++ b/include/boost/config/platform/symbian.hpp @@ -0,0 +1,94 @@ +// (C) Copyright Yuriy Krasnoschek 2009. +// (C) Copyright John Maddock 2001 - 2003. +// (C) Copyright Jens Maurer 2001 - 2003. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// symbian specific config options: + + +#define BOOST_PLATFORM "Symbian" +#define BOOST_SYMBIAN 1 + + +#if defined(__S60_3X__) +// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL +# define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK +// make sure we have __GLIBC_PREREQ if available at all +# include +// boilerplate code: +# define BOOST_HAS_UNISTD_H +# include +// S60 SDK defines _POSIX_VERSION as POSIX.1 +# ifndef BOOST_HAS_STDINT_H +# define BOOST_HAS_STDINT_H +# endif +# ifndef BOOST_HAS_GETTIMEOFDAY +# define BOOST_HAS_GETTIMEOFDAY +# endif +# ifndef BOOST_HAS_DIRENT_H +# define BOOST_HAS_DIRENT_H +# endif +# ifndef BOOST_HAS_SIGACTION +# define BOOST_HAS_SIGACTION +# endif +# ifndef BOOST_HAS_PTHREADS +# define BOOST_HAS_PTHREADS +# endif +# ifndef BOOST_HAS_NANOSLEEP +# define BOOST_HAS_NANOSLEEP +# endif +# ifndef BOOST_HAS_SCHED_YIELD +# define BOOST_HAS_SCHED_YIELD +# endif +# ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# endif +# ifndef BOOST_HAS_LOG1P +# define BOOST_HAS_LOG1P +# endif +# ifndef BOOST_HAS_EXPM1 +# define BOOST_HAS_EXPM1 +# endif +# ifndef BOOST_POSIX_API +# define BOOST_POSIX_API +# endif +// endianess support +# include +// Symbian SDK provides _BYTE_ORDER instead of __BYTE_ORDER +# ifndef __LITTLE_ENDIAN +# ifdef _LITTLE_ENDIAN +# define __LITTLE_ENDIAN _LITTLE_ENDIAN +# else +# define __LITTLE_ENDIAN 1234 +# endif +# endif +# ifndef __BIG_ENDIAN +# ifdef _BIG_ENDIAN +# define __BIG_ENDIAN _BIG_ENDIAN +# else +# define __BIG_ENDIAN 4321 +# endif +# endif +# ifndef __BYTE_ORDER +# define __BYTE_ORDER __LITTLE_ENDIAN // Symbian is LE +# endif +// Known limitations +# define BOOST_ASIO_DISABLE_SERIAL_PORT +# define BOOST_DATE_TIME_NO_LOCALE +# define BOOST_NO_STD_WSTRING +# define BOOST_EXCEPTION_DISABLE +# define BOOST_NO_EXCEPTIONS + +#else // TODO: More platform support e.g. UIQ +# error "Unsuppoted Symbian SDK" +#endif + +#if defined(__WINSCW__) && !defined(BOOST_DISABLE_WIN32) +# define BOOST_DISABLE_WIN32 // winscw defines WIN32 macro +#endif + + diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index 615bb064..8606e12e 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -65,6 +65,10 @@ // vxWorks: # define BOOST_PLATFORM_CONFIG "boost/config/platform/vxworks.hpp" +#elif defined(__SYMBIAN32__) +// Symbian: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/symbian.hpp" + #else # if defined(unix) \ From 325f2a121cb6af7f2269244f684e92ac411ecc56 Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Mon, 15 Mar 2010 21:14:55 +0000 Subject: [PATCH 114/435] Add definition of BOOST_MSVC_FULL_VER_WORKAROUND_GUARD. Fixes #4012 [SVN r60624] --- include/boost/detail/workaround.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index b6b64125..40b3423b 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -65,6 +65,11 @@ #else #define BOOST_MSVC_WORKAROUND_GUARD 0 #endif +#ifndef BOOST_MSVC_FULL_VER +#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1 +#else +#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0 +#endif #ifndef __GNUC__ #define __GNUC___WORKAROUND_GUARD 1 #else From f781c30712dd526c16ec8f2348599ba1987c9801 Mon Sep 17 00:00:00 2001 From: David Dean Date: Fri, 2 Apr 2010 18:35:00 +0000 Subject: [PATCH 115/435] make abi/borland_prefix and borland.jam defaults match [SVN r61007] --- include/boost/config/abi/borland_prefix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/abi/borland_prefix.hpp b/include/boost/config/abi/borland_prefix.hpp index 49f42494..3a0e5ae2 100644 --- a/include/boost/config/abi/borland_prefix.hpp +++ b/include/boost/config/abi/borland_prefix.hpp @@ -21,7 +21,7 @@ // 8026 - functions taking class by value arguments are not expanded inline #pragma nopushoptwarn -# pragma option push -Vx -Ve -a8 -b -pc -Vmv -VC- -Vl- -w-8027 -w-8026 +# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026 From 20a6d47804175ad601b39b6ba87884c9519330ee Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 9 Apr 2010 12:17:57 +0000 Subject: [PATCH 116/435] Committed Neils Dekker's new macro tests. [SVN r61153] --- test/all/Jamfile.v2 | 5 +- test/boost_no_com_value_init.ipp | 182 +++++++++++++++++++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +- test/no_com_value_init_fail.cpp | 37 +++++++ test/no_com_value_init_pass.cpp | 37 +++++++ 6 files changed, 273 insertions(+), 2 deletions(-) create mode 100644 test/boost_no_com_value_init.ipp create mode 100644 test/no_com_value_init_fail.cpp create mode 100644 test/no_com_value_init_pass.cpp diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 4b510a83..e33f87a0 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 Sun Oct 11 13:04:18 2009 +# This file was automatically generated on Fri Apr 09 12:24:54 2010 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -265,6 +265,9 @@ test-suite "BOOST_NO_CHAR16_T" : test-suite "BOOST_NO_CHAR32_T" : [ run ../no_char32_t_pass.cpp ] [ compile-fail ../no_char32_t_fail.cpp ] ; +test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" : +[ run ../no_com_value_init_pass.cpp ] +[ compile-fail ../no_com_value_init_fail.cpp ] ; test-suite "BOOST_NO_CONCEPTS" : [ run ../no_concepts_pass.cpp ] [ compile-fail ../no_concepts_fail.cpp ] ; diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp new file mode 100644 index 00000000..78df4edd --- /dev/null +++ b/test/boost_no_com_value_init.ipp @@ -0,0 +1,182 @@ +// (C) Copyright Niels Dekker 2010. +// 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_COMPLETE_VALUE_INITIALIZATION +// TITLE: No complete value-initialization +// DESCRIPTION: The C++ compiler does not to have implemented value-initialization completely. +// See also boost/libs/utility/value_init.htm#compiler_issues + +#include +#include + +namespace boost_no_complete_value_initialization +{ + enum enum_type { negative_number = -1, magic_number = 42 }; + + // A POD struct. + struct pod_struct + { + enum_type e; + char c; + unsigned char uc; + short s; + int i; + unsigned u; + long l; + float f; + double d; + void* p; + }; + + bool is_zero_initialized(const pod_struct& arg) + { + return + arg.e == 0 && + arg.c == 0 && + arg.uc == 0 && + arg.s == 0 && + arg.i == 0 && + arg.u == 0 && + arg.l == 0 && + arg.f == 0 && + arg.d == 0 && + arg.p == 0; + } + + // A class that holds a "magic" enum value. + class enum_holder + { + enum_type m_enum; + public: + + enum_holder() + : + m_enum(magic_number) + { + } + + bool is_default() const + { + return m_enum == magic_number; + } + }; + + + // A class that is not a POD type. + class non_pod_class + { + private: + enum_holder m_enum_holder; + + public: + int i; + + virtual bool is_value_initialized() const + { + return m_enum_holder.is_default() && i == 0; + } + + virtual ~non_pod_class() {} + }; + + // The first argument (is_value_initializated) tells whether value initialization + // has succeeded. + // The second argument tells what expression was evaluated. + bool is_true(bool is_value_initializated, const char *const expression) + { + if ( ! is_value_initializated ) + { + std::cout + << "Information: " << expression << " evaluated to false.\n" + << std::endl; + } + return is_value_initializated; + } + +#define IS_TRUE(value) is_true(value, #value) +#define IS_ZERO(value) is_true(value == 0, #value " == 0") + + // The default constructor of this class initializes each of its + // data members by means of an empty set of parentheses, and checks + // whether each of them is value-initialized. + class value_initializer + { + private: + enum_holder m_enum_holder; + enum_type m_enum; + char m_char; + unsigned char m_unsigned_char; + short m_short; + int m_int; + unsigned m_unsigned; + long m_long; + float m_float; + double m_double; + void* m_ptr; + pod_struct m_pod; + pod_struct m_pod_array[2]; + non_pod_class m_non_pod; + non_pod_class m_non_pod_array[2]; + + public: + value_initializer() + : + m_enum_holder(), + m_enum(), + m_char(), + m_unsigned_char(), + m_short(), + m_int(), + m_unsigned(), + m_long(), + m_float(), + m_double(), + m_ptr(), + m_pod(), + m_pod_array(), + m_non_pod(), + m_non_pod_array() + { + } + + // Returns the number of failures. + unsigned check() const + { + return + (IS_TRUE( m_enum_holder.is_default() ) ? 0 : 1) + + (IS_ZERO(m_enum) ? 0 : 1) + + (IS_ZERO(m_char) ? 0 : 1) + + (IS_ZERO(m_unsigned_char) ? 0 : 1) + + (IS_ZERO(m_short) ? 0 : 1) + + (IS_ZERO(m_int) ? 0 : 1) + + (IS_ZERO(m_unsigned) ? 0 : 1) + + (IS_ZERO(m_long) ? 0 : 1) + + (IS_ZERO(m_float) ? 0 : 1) + + (IS_ZERO(m_double) ? 0 : 1) + + (IS_ZERO(m_ptr) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod) ) ? 0 : 1) + + (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_array[0]) + && is_zero_initialized(m_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( m_non_pod_array[0].is_value_initialized() + && m_non_pod_array[1].is_value_initialized() ) ? 0 : 1); + + } + }; + + int test() + { + // Check both value-initialization on the stack and on the heap: + const unsigned num_failures_on_stack = value_initializer().check(); + const value_initializer* const ptr = new value_initializer(); + const unsigned num_failures_on_heap = ptr->check(); + delete ptr; + return static_cast(num_failures_on_stack + num_failures_on_heap); + } + +} // End of namespace. + diff --git a/test/config_info.cpp b/test/config_info.cpp index 3b781432..62f906b1 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -985,6 +985,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_AUTO_PTR); PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); + PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION); PRINT_MACRO(BOOST_NO_CONCEPTS); PRINT_MACRO(BOOST_NO_CONSTEXPR); PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); @@ -1080,6 +1081,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 81aee7c4..30c295d5 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sun Oct 11 13:04:18 2009 +// This file was automatically generated on Fri Apr 09 12:24:54 2010 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -172,6 +172,11 @@ namespace boost_no_char16_t = empty_boost; #else namespace boost_no_char32_t = empty_boost; #endif +#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +namespace boost_no_complete_value_initialization = empty_boost; +#endif #ifndef BOOST_NO_CONCEPTS #include "boost_no_concepts.ipp" #else @@ -1251,6 +1256,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_complete_value_initialization::test()) + { + std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_concepts::test()) { std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_com_value_init_fail.cpp b/test/no_com_value_init_fail.cpp new file mode 100644 index 00000000..ec89a858 --- /dev/null +++ b/test/no_com_value_init_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Apr 09 12:24:53 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// This file should not compile, if it does then +// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should not be defined. +// See file boost_no_com_value_init.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_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_complete_value_initialization::test(); +} + diff --git a/test/no_com_value_init_pass.cpp b/test/no_com_value_init_pass.cpp new file mode 100644 index 00000000..cfe00a22 --- /dev/null +++ b/test/no_com_value_init_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Apr 09 12:24:53 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// This file should compile, if it does not then +// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should be defined. +// See file boost_no_com_value_init.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_COMPLETE_VALUE_INITIALIZATION +#include "boost_no_com_value_init.ipp" +#else +namespace boost_no_complete_value_initialization = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_complete_value_initialization::test(); +} + From 39807d1b97c91612b360374a56e5fda901555f7c Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 9 Apr 2010 12:35:20 +0000 Subject: [PATCH 117/435] Committed Neils Dekker's new macro docs. [SVN r61154] --- .../boost_config/boost_macro_reference.html | 19 +++++++++++++++++++ doc/html/index.html | 4 ++-- doc/macro_reference.qbk | 6 ++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 5c737bc1..81957ff3 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -172,6 +172,25 @@
+

+ BOOST_NO_COMPLETE_VALUE_INITIALIZATION +

+
+

+ Compiler +

+
+

+ Compiler has not completely implemented value-initialization. See + also The + Utility/Value Init docs +

+

BOOST_NO_CTYPE_FUNCTIONS diff --git a/doc/html/index.html b/doc/html/index.html index 21dda5c7..08ed6fef 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

@@ -960,7 +960,7 @@
- +

Last revised: March 02, 2010 at 17:08:14 GMT

Last revised: April 09, 2010 at 12:33:49 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 3a96512e..00d07b4a 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -49,6 +49,10 @@ Koenig lookup); see std::3.4.2 \[basic.koenig.lookup\] [[`BOOST_NO_AUTO_PTR`][Standard library][ If the compiler / library supplies non-standard or broken `std::auto_ptr`. ]] +[[`BOOST_NO_COMPLETE_VALUE_INITIALIZATION`][Compiler][ +Compiler has not completely implemented value-initialization. +See also [@../../../utility/value_init.htm#compiler_issues The Utility\/Value Init docs] +]] [[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][ The Platform does not provide functions for the character-classifying operations `` and ``, only macros. @@ -985,3 +989,5 @@ match that used to create the libraries via bjam 's install rules. [endsect] [endsect] + + From c9829c3a0233e98d2947aec949434a1bc1c4a089 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 9 Apr 2010 17:37:52 +0000 Subject: [PATCH 118/435] Added value-initialization test for m_int_array, tested individual array elements separately, printed number of failures. [SVN r61164] --- test/boost_no_com_value_init.ipp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 78df4edd..59f7f92e 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -90,9 +90,7 @@ namespace boost_no_complete_value_initialization { if ( ! is_value_initializated ) { - std::cout - << "Information: " << expression << " evaluated to false.\n" - << std::endl; + std::cout << "Note: " << expression << " evaluated to false." << std::endl; } return is_value_initializated; } @@ -117,6 +115,7 @@ namespace boost_no_complete_value_initialization float m_float; double m_double; void* m_ptr; + int m_int_array[2]; pod_struct m_pod; pod_struct m_pod_array[2]; non_pod_class m_non_pod; @@ -136,6 +135,7 @@ namespace boost_no_complete_value_initialization m_float(), m_double(), m_ptr(), + m_int_array(), m_pod(), m_pod_array(), m_non_pod(), @@ -158,12 +158,14 @@ namespace boost_no_complete_value_initialization (IS_ZERO(m_float) ? 0 : 1) + (IS_ZERO(m_double) ? 0 : 1) + (IS_ZERO(m_ptr) ? 0 : 1) + + (IS_ZERO(m_int_array[0]) ? 0 : 1) + + (IS_ZERO(m_int_array[1]) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_pod) ) ? 0 : 1) + (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_array[0]) - && is_zero_initialized(m_pod_array[1]) ) ? 0 : 1) + - (IS_TRUE( m_non_pod_array[0].is_value_initialized() - && m_non_pod_array[1].is_value_initialized() ) ? 0 : 1); + (IS_TRUE( is_zero_initialized(m_pod_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( m_non_pod_array[0].is_value_initialized() ) ? 0 : 1 ) + + (IS_TRUE( m_non_pod_array[1].is_value_initialized() ) ? 0 : 1 ); } }; @@ -175,6 +177,12 @@ namespace boost_no_complete_value_initialization const value_initializer* const ptr = new value_initializer(); const unsigned num_failures_on_heap = ptr->check(); delete ptr; + if ( num_failures_on_stack > 0 || num_failures_on_heap > 0 ) + { + std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack + << "\nNumber of initialization failures on the heap: " << num_failures_on_heap << std::endl; + + } return static_cast(num_failures_on_stack + num_failures_on_heap); } From 7318513e8e3b4263c6f85cc1f4d53dc58eccc4f7 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 10 Apr 2010 10:28:40 +0000 Subject: [PATCH 119/435] Added more value-initialization tests. Added more comment. Printed revision number. Avoided CodeGear 2010 warning W8070, "Function should return a value". [SVN r61175] --- test/boost_no_com_value_init.ipp | 202 +++++++++++++++++++++++++++---- 1 file changed, 176 insertions(+), 26 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 59f7f92e..93e32b28 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -47,7 +47,21 @@ namespace boost_no_complete_value_initialization arg.p == 0; } + struct derived_pod_struct: pod_struct + { + int derived_data; + }; + + bool is_zero_initialized(const derived_pod_struct& arg) + { + const pod_struct& base_subobject = arg; + return arg.derived_data == 0 && is_zero_initialized(base_subobject); + } + + // A class that holds a "magic" enum value. + // Note: This is not a POD class, because it has a user-defined + // default constructor. class enum_holder { enum_type m_enum; @@ -66,6 +80,64 @@ namespace boost_no_complete_value_initialization }; + // An aggregate struct of a non-POD class and an int. + struct enum_holder_and_int + { + enum_holder e; + int i; + }; + + bool is_value_initialized(const enum_holder_and_int& arg) + { + return arg.e.is_default() && arg.i == 0; + } + + + // An class that has a private and a protected int data member. + class private_and_protected_int + { + private: + int private_int; + protected: + int protected_int; + public: + bool is_value_initialized() const + { + return private_int == 0 && protected_int == 0; + } + }; + + + class user_defined_destructor_holder + { + public: + int i; + ~user_defined_destructor_holder() + { + } + }; + + bool is_value_initialized(const user_defined_destructor_holder& arg) + { + return arg.i == 0; + } + + + class virtual_destructor_holder + { + public: + int i; + virtual ~virtual_destructor_holder() + { + } + }; + + bool is_value_initialized(const virtual_destructor_holder& arg) + { + return arg.i == 0; + } + + // A class that is not a POD type. class non_pod_class { @@ -83,6 +155,7 @@ namespace boost_no_complete_value_initialization virtual ~non_pod_class() {} }; + // The first argument (is_value_initializated) tells whether value initialization // has succeeded. // The second argument tells what expression was evaluated. @@ -98,26 +171,47 @@ namespace boost_no_complete_value_initialization #define IS_TRUE(value) is_true(value, #value) #define IS_ZERO(value) is_true(value == 0, #value " == 0") - // The default constructor of this class initializes each of its - // data members by means of an empty set of parentheses, and checks - // whether each of them is value-initialized. + // value_initializer initializes each of its data members by means + // of an empty set of parentheses, and allows checking whether + // each of them is indeed value-initialized, as specified by + // the C++ Standard ([dcl.init]). class value_initializer { private: enum_holder m_enum_holder; + enum_holder m_enum_holder_array[2]; enum_type m_enum; - char m_char; - unsigned char m_unsigned_char; + enum_type m_enum_array[2]; + char m_char; + char m_char_array[2]; + unsigned char m_unsigned_char; + unsigned char m_unsigned_char_array[2]; short m_short; + short m_short_array[2]; int m_int; - unsigned m_unsigned; - long m_long; - float m_float; - double m_double; - void* m_ptr; int m_int_array[2]; + unsigned m_unsigned; + unsigned m_unsigned_array[2]; + long m_long; + long m_long_array[2]; + float m_float; + float m_float_array[2]; + double m_double; + double m_double_array[2]; + void* m_ptr; + void* m_ptr_array[2]; pod_struct m_pod; pod_struct m_pod_array[2]; + derived_pod_struct m_derived_pod; + derived_pod_struct m_derived_pod_array[2]; + enum_holder_and_int m_enum_holder_and_int; + enum_holder_and_int m_enum_holder_and_int_array[2]; + private_and_protected_int m_private_and_protected_int; + private_and_protected_int m_private_and_protected_int_array[2]; + user_defined_destructor_holder m_user_defined_destructor_holder; + user_defined_destructor_holder m_user_defined_destructor_holder_array[2]; + virtual_destructor_holder m_virtual_destructor_holder; + virtual_destructor_holder m_virtual_destructor_holder_array[2]; non_pod_class m_non_pod; non_pod_class m_non_pod_array[2]; @@ -125,19 +219,39 @@ namespace boost_no_complete_value_initialization value_initializer() : m_enum_holder(), + m_enum_holder_array(), m_enum(), + m_enum_array(), m_char(), + m_char_array(), m_unsigned_char(), + m_unsigned_char_array(), m_short(), + m_short_array(), m_int(), - m_unsigned(), - m_long(), - m_float(), - m_double(), - m_ptr(), m_int_array(), + m_unsigned(), + m_unsigned_array(), + m_long(), + m_long_array(), + m_float(), + m_float_array(), + m_double(), + m_double_array(), + m_ptr(), + m_ptr_array(), m_pod(), m_pod_array(), + m_derived_pod(), + m_derived_pod_array(), + m_enum_holder_and_int(), + m_enum_holder_and_int_array(), + m_private_and_protected_int(), + m_private_and_protected_int_array(), + m_user_defined_destructor_holder(), + m_user_defined_destructor_holder_array(), + m_virtual_destructor_holder(), + m_virtual_destructor_holder_array(), m_non_pod(), m_non_pod_array() { @@ -146,30 +260,66 @@ namespace boost_no_complete_value_initialization // Returns the number of failures. unsigned check() const { - return + const unsigned num_failures = (IS_TRUE( m_enum_holder.is_default() ) ? 0 : 1) + + (IS_TRUE( m_enum_holder_array[0].is_default() ) ? 0 : 1) + + (IS_TRUE( m_enum_holder_array[1].is_default() ) ? 0 : 1) + (IS_ZERO(m_enum) ? 0 : 1) + + (IS_ZERO(m_enum_array[0]) ? 0 : 1) + + (IS_ZERO(m_enum_array[1]) ? 0 : 1) + (IS_ZERO(m_char) ? 0 : 1) + + (IS_ZERO(m_char_array[0]) ? 0 : 1) + + (IS_ZERO(m_char_array[1]) ? 0 : 1) + (IS_ZERO(m_unsigned_char) ? 0 : 1) + + (IS_ZERO(m_unsigned_char_array[0]) ? 0 : 1) + + (IS_ZERO(m_unsigned_char_array[1]) ? 0 : 1) + (IS_ZERO(m_short) ? 0 : 1) + + (IS_ZERO(m_short_array[0]) ? 0 : 1) + + (IS_ZERO(m_short_array[1]) ? 0 : 1) + (IS_ZERO(m_int) ? 0 : 1) + - (IS_ZERO(m_unsigned) ? 0 : 1) + - (IS_ZERO(m_long) ? 0 : 1) + - (IS_ZERO(m_float) ? 0 : 1) + - (IS_ZERO(m_double) ? 0 : 1) + - (IS_ZERO(m_ptr) ? 0 : 1) + (IS_ZERO(m_int_array[0]) ? 0 : 1) + (IS_ZERO(m_int_array[1]) ? 0 : 1) + + (IS_ZERO(m_unsigned) ? 0 : 1) + + (IS_ZERO(m_unsigned_array[0]) ? 0 : 1) + + (IS_ZERO(m_unsigned_array[1]) ? 0 : 1) + + (IS_ZERO(m_long) ? 0 : 1) + + (IS_ZERO(m_long_array[0]) ? 0 : 1) + + (IS_ZERO(m_long_array[1]) ? 0 : 1) + + (IS_ZERO(m_float) ? 0 : 1) + + (IS_ZERO(m_float_array[0]) ? 0 : 1) + + (IS_ZERO(m_float_array[1]) ? 0 : 1) + + (IS_ZERO(m_double) ? 0 : 1) + + (IS_ZERO(m_double_array[0]) ? 0 : 1) + + (IS_ZERO(m_double_array[1]) ? 0 : 1) + + (IS_ZERO(m_ptr) ? 0 : 1) + + (IS_ZERO(m_ptr_array[0]) ? 0 : 1) + + (IS_ZERO(m_ptr_array[1]) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_pod) ) ? 0 : 1) + - (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_pod_array[0]) ) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_pod) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_pod_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_enum_holder_and_int) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[1]) ) ? 0 : 1) + + (IS_TRUE( m_private_and_protected_int.is_value_initialized() ) ? 0 : 1) + + (IS_TRUE( m_private_and_protected_int_array[0].is_value_initialized() ) ? 0 : 1 ) + + (IS_TRUE( m_private_and_protected_int_array[1].is_value_initialized() ) ? 0 : 1 ); + (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_virtual_destructor_holder) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_virtual_destructor_holder_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_value_initialized(m_virtual_destructor_holder_array[1]) ) ? 0 : 1) + + (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + (IS_TRUE( m_non_pod_array[0].is_value_initialized() ) ? 0 : 1 ) + (IS_TRUE( m_non_pod_array[1].is_value_initialized() ) ? 0 : 1 ); - + return num_failures; } }; + int test() { // Check both value-initialization on the stack and on the heap: @@ -180,11 +330,11 @@ namespace boost_no_complete_value_initialization if ( num_failures_on_stack > 0 || num_failures_on_heap > 0 ) { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack - << "\nNumber of initialization failures on the heap: " << num_failures_on_heap << std::endl; - + << "\nNumber of initialization failures on the heap: " << num_failures_on_heap + << "\nDetected by boost_no_complete_value_initialization::test() revision 3." + << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); } } // End of namespace. - From 8cfb7c01d19f8698ea7817f48af84c9c75de5abf Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 10 Apr 2010 11:29:18 +0000 Subject: [PATCH 120/435] Added value-initialization tests for POD unions. [SVN r61176] --- test/boost_no_com_value_init.ipp | 46 +++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 93e32b28..eded3b35 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -59,6 +59,32 @@ namespace boost_no_complete_value_initialization } + union pod_struct_and_int_union + { + pod_struct first; + int second; + }; + + bool is_zero_initialized(const pod_struct_and_int_union& arg) + { + // When a union is zero-initialized, its first non-static + // named data member is zero-initialized ([dcl.init]). + return is_zero_initialized(arg.first); + } + + + union int_and_pod_struct_union + { + int first; + pod_struct second; + }; + + bool is_zero_initialized(const int_and_pod_struct_union& arg) + { + return arg.first == 0; + } + + // A class that holds a "magic" enum value. // Note: This is not a POD class, because it has a user-defined // default constructor. @@ -214,6 +240,10 @@ namespace boost_no_complete_value_initialization virtual_destructor_holder m_virtual_destructor_holder_array[2]; non_pod_class m_non_pod; non_pod_class m_non_pod_array[2]; + pod_struct_and_int_union m_pod_struct_and_int_union; + pod_struct_and_int_union m_pod_struct_and_int_union_array[2]; + int_and_pod_struct_union m_int_and_pod_struct_union; + int_and_pod_struct_union m_int_and_pod_struct_union_array[2]; public: value_initializer() @@ -253,7 +283,11 @@ namespace boost_no_complete_value_initialization m_virtual_destructor_holder(), m_virtual_destructor_holder_array(), m_non_pod(), - m_non_pod_array() + m_non_pod_array(), + m_pod_struct_and_int_union(), + m_pod_struct_and_int_union_array(), + m_int_and_pod_struct_union(), + m_int_and_pod_struct_union_array() { } @@ -314,7 +348,13 @@ namespace boost_no_complete_value_initialization (IS_TRUE( is_value_initialized(m_virtual_destructor_holder_array[1]) ) ? 0 : 1) + (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + (IS_TRUE( m_non_pod_array[0].is_value_initialized() ) ? 0 : 1 ) + - (IS_TRUE( m_non_pod_array[1].is_value_initialized() ) ? 0 : 1 ); + (IS_TRUE( m_non_pod_array[1].is_value_initialized() ) ? 0 : 1 ) + + (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union_array[0]) ) ? 0 : 1 ) + + (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union_array[1]) ) ? 0 : 1 ) + + (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union_array[0]) ) ? 0 : 1 ) + + (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union_array[1]) ) ? 0 : 1 ); return num_failures; } }; @@ -331,7 +371,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 3." + << "\nDetected by boost_no_complete_value_initialization::test() revision 4." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From 0ecdbd11d560850a581939abcac6d5fd8af6ab7a Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 10 Apr 2010 12:26:00 +0000 Subject: [PATCH 121/435] Added value-initialization tests for POD structs that just have an int data member. [SVN r61177] --- test/boost_no_com_value_init.ipp | 64 ++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 8 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index eded3b35..88698df7 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -58,6 +58,33 @@ namespace boost_no_complete_value_initialization return arg.derived_data == 0 && is_zero_initialized(base_subobject); } + struct empty_struct + { + }; + + struct derived_struct: empty_struct + { + int data; + }; + + bool is_zero_initialized(const derived_struct& arg) + { + return arg.data == 0; + } + + struct int_struct + { + int data; + }; + + struct derived_int_struct: int_struct + { + }; + + bool is_zero_initialized(const int_struct& arg) + { + return arg.data == 0; + } union pod_struct_and_int_union { @@ -226,10 +253,16 @@ namespace boost_no_complete_value_initialization double m_double_array[2]; void* m_ptr; void* m_ptr_array[2]; - pod_struct m_pod; - pod_struct m_pod_array[2]; + int_struct m_int_struct; + int_struct m_int_struct_array[2]; + pod_struct m_pod_struct; + pod_struct m_pod_struct_array[2]; derived_pod_struct m_derived_pod; derived_pod_struct m_derived_pod_array[2]; + derived_struct m_derived_struct; + derived_struct m_derived_struct_array[2]; + derived_int_struct m_derived_int_struct; + derived_int_struct m_derived_int_struct_array[2]; enum_holder_and_int m_enum_holder_and_int; enum_holder_and_int m_enum_holder_and_int_array[2]; private_and_protected_int m_private_and_protected_int; @@ -270,10 +303,16 @@ namespace boost_no_complete_value_initialization m_double_array(), m_ptr(), m_ptr_array(), - m_pod(), - m_pod_array(), + m_int_struct(), + m_int_struct_array(), + m_pod_struct(), + m_pod_struct_array(), m_derived_pod(), m_derived_pod_array(), + m_derived_struct(), + m_derived_struct_array(), + m_derived_int_struct(), + m_derived_int_struct_array(), m_enum_holder_and_int(), m_enum_holder_and_int_array(), m_private_and_protected_int(), @@ -328,12 +367,21 @@ namespace boost_no_complete_value_initialization (IS_ZERO(m_ptr) ? 0 : 1) + (IS_ZERO(m_ptr_array[0]) ? 0 : 1) + (IS_ZERO(m_ptr_array[1]) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_int_struct) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_int_struct_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_int_struct_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_struct) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_struct_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_pod_struct_array[1]) ) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_derived_pod) ) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_derived_pod_array[0]) ) ? 0 : 1) + (IS_TRUE( is_zero_initialized(m_derived_pod_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_struct) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_struct_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_struct_array[1]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_int_struct) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_int_struct_array[0]) ) ? 0 : 1) + + (IS_TRUE( is_zero_initialized(m_derived_int_struct_array[1]) ) ? 0 : 1) + (IS_TRUE( is_value_initialized(m_enum_holder_and_int) ) ? 0 : 1) + (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[0]) ) ? 0 : 1) + (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[1]) ) ? 0 : 1) + @@ -371,7 +419,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 4." + << "\nDetected by boost_no_complete_value_initialization::test() revision 5." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From 43f24c36f784efcf7269750b4fd0add4433ae9ac Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 10 Apr 2010 22:27:55 +0000 Subject: [PATCH 122/435] Added value-initialization tests for int_struct_holder; made tests more uniform by having an is_value_initialized(arg) function for each type. [SVN r61188] --- test/boost_no_com_value_init.ipp | 229 ++++++++++++++++++------------- 1 file changed, 134 insertions(+), 95 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 88698df7..afdcbc7f 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -32,7 +32,7 @@ namespace boost_no_complete_value_initialization void* p; }; - bool is_zero_initialized(const pod_struct& arg) + bool is_value_initialized(const pod_struct& arg) { return arg.e == 0 && @@ -52,10 +52,10 @@ namespace boost_no_complete_value_initialization int derived_data; }; - bool is_zero_initialized(const derived_pod_struct& arg) + bool is_value_initialized(const derived_pod_struct& arg) { const pod_struct& base_subobject = arg; - return arg.derived_data == 0 && is_zero_initialized(base_subobject); + return arg.derived_data == 0 && is_value_initialized(base_subobject); } struct empty_struct @@ -67,7 +67,7 @@ namespace boost_no_complete_value_initialization int data; }; - bool is_zero_initialized(const derived_struct& arg) + bool is_value_initialized(const derived_struct& arg) { return arg.data == 0; } @@ -77,11 +77,26 @@ namespace boost_no_complete_value_initialization int data; }; + bool is_value_initialized(const int_struct& arg) + { + return arg.data == 0; + } + + struct int_struct_holder + { + int_struct data; + }; + + bool is_value_initialized(const int_struct_holder& arg) + { + return is_value_initialized(arg.data); + } + struct derived_int_struct: int_struct { }; - bool is_zero_initialized(const int_struct& arg) + bool is_value_initialized(const derived_int_struct& arg) { return arg.data == 0; } @@ -92,11 +107,11 @@ namespace boost_no_complete_value_initialization int second; }; - bool is_zero_initialized(const pod_struct_and_int_union& arg) + bool is_value_initialized(const pod_struct_and_int_union& arg) { // When a union is zero-initialized, its first non-static // named data member is zero-initialized ([dcl.init]). - return is_zero_initialized(arg.first); + return is_value_initialized(arg.first); } @@ -106,7 +121,7 @@ namespace boost_no_complete_value_initialization pod_struct second; }; - bool is_zero_initialized(const int_and_pod_struct_union& arg) + bool is_value_initialized(const int_and_pod_struct_union& arg) { return arg.first == 0; } @@ -126,12 +141,17 @@ namespace boost_no_complete_value_initialization { } - bool is_default() const + bool is_value_initialized() const { return m_enum == magic_number; } }; + bool is_value_initialized(const enum_holder& arg) + { + return arg.is_value_initialized(); + } + // An aggregate struct of a non-POD class and an int. struct enum_holder_and_int @@ -142,7 +162,7 @@ namespace boost_no_complete_value_initialization bool is_value_initialized(const enum_holder_and_int& arg) { - return arg.e.is_default() && arg.i == 0; + return arg.e.is_value_initialized() && arg.i == 0; } @@ -154,9 +174,9 @@ namespace boost_no_complete_value_initialization protected: int protected_int; public: - bool is_value_initialized() const + friend bool is_value_initialized(const private_and_protected_int& arg) { - return private_int == 0 && protected_int == 0; + return arg.private_int == 0 && arg.protected_int == 0; } }; @@ -202,27 +222,39 @@ namespace boost_no_complete_value_initialization virtual bool is_value_initialized() const { - return m_enum_holder.is_default() && i == 0; + return m_enum_holder.is_value_initialized() && i == 0; } virtual ~non_pod_class() {} }; - - // The first argument (is_value_initializated) tells whether value initialization - // has succeeded. - // The second argument tells what expression was evaluated. - bool is_true(bool is_value_initializated, const char *const expression) + bool is_value_initialized(const non_pod_class& arg) { - if ( ! is_value_initializated ) - { - std::cout << "Note: " << expression << " evaluated to false." << std::endl; - } - return is_value_initializated; + return arg.is_value_initialized(); } -#define IS_TRUE(value) is_true(value, #value) -#define IS_ZERO(value) is_true(value == 0, #value " == 0") + + // For built-in types and enumerated types. + template + bool is_value_initialized(const T& arg) + { + return arg == 0; + } + + + // The first argument should specify whether a specific variable is value-initializated. + // The second argument should specify the name of the variable. + // Passes the information to standard output, if the variable is not value-initializated. + bool is_true(bool is_variable_value_initializated, const char *const variable_name) + { + if ( ! is_variable_value_initializated ) + { + std::cout << "Note: " << variable_name << " is not value-initialized." << std::endl; + } + return is_variable_value_initializated; + } + +#define IS_VALUE_INITIALIZED(value) is_true( is_value_initialized(value), #value) // value_initializer initializes each of its data members by means // of an empty set of parentheses, and allows checking whether @@ -255,6 +287,8 @@ namespace boost_no_complete_value_initialization void* m_ptr_array[2]; int_struct m_int_struct; int_struct m_int_struct_array[2]; + int_struct m_int_struct_holder; + int_struct m_int_struct_holder_array[2]; pod_struct m_pod_struct; pod_struct m_pod_struct_array[2]; derived_pod_struct m_derived_pod; @@ -305,6 +339,8 @@ namespace boost_no_complete_value_initialization m_ptr_array(), m_int_struct(), m_int_struct_array(), + m_int_struct_holder(), + m_int_struct_holder_array(), m_pod_struct(), m_pod_struct_array(), m_derived_pod(), @@ -334,75 +370,78 @@ namespace boost_no_complete_value_initialization unsigned check() const { const unsigned num_failures = - (IS_TRUE( m_enum_holder.is_default() ) ? 0 : 1) + - (IS_TRUE( m_enum_holder_array[0].is_default() ) ? 0 : 1) + - (IS_TRUE( m_enum_holder_array[1].is_default() ) ? 0 : 1) + - (IS_ZERO(m_enum) ? 0 : 1) + - (IS_ZERO(m_enum_array[0]) ? 0 : 1) + - (IS_ZERO(m_enum_array[1]) ? 0 : 1) + - (IS_ZERO(m_char) ? 0 : 1) + - (IS_ZERO(m_char_array[0]) ? 0 : 1) + - (IS_ZERO(m_char_array[1]) ? 0 : 1) + - (IS_ZERO(m_unsigned_char) ? 0 : 1) + - (IS_ZERO(m_unsigned_char_array[0]) ? 0 : 1) + - (IS_ZERO(m_unsigned_char_array[1]) ? 0 : 1) + - (IS_ZERO(m_short) ? 0 : 1) + - (IS_ZERO(m_short_array[0]) ? 0 : 1) + - (IS_ZERO(m_short_array[1]) ? 0 : 1) + - (IS_ZERO(m_int) ? 0 : 1) + - (IS_ZERO(m_int_array[0]) ? 0 : 1) + - (IS_ZERO(m_int_array[1]) ? 0 : 1) + - (IS_ZERO(m_unsigned) ? 0 : 1) + - (IS_ZERO(m_unsigned_array[0]) ? 0 : 1) + - (IS_ZERO(m_unsigned_array[1]) ? 0 : 1) + - (IS_ZERO(m_long) ? 0 : 1) + - (IS_ZERO(m_long_array[0]) ? 0 : 1) + - (IS_ZERO(m_long_array[1]) ? 0 : 1) + - (IS_ZERO(m_float) ? 0 : 1) + - (IS_ZERO(m_float_array[0]) ? 0 : 1) + - (IS_ZERO(m_float_array[1]) ? 0 : 1) + - (IS_ZERO(m_double) ? 0 : 1) + - (IS_ZERO(m_double_array[0]) ? 0 : 1) + - (IS_ZERO(m_double_array[1]) ? 0 : 1) + - (IS_ZERO(m_ptr) ? 0 : 1) + - (IS_ZERO(m_ptr_array[0]) ? 0 : 1) + - (IS_ZERO(m_ptr_array[1]) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_int_struct) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_int_struct_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_int_struct_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_struct) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_struct_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_struct_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_pod) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_pod_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_pod_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_struct) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_struct_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_struct_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_int_struct) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_int_struct_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_derived_int_struct_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_enum_holder_and_int) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_enum_holder_and_int_array[1]) ) ? 0 : 1) + - (IS_TRUE( m_private_and_protected_int.is_value_initialized() ) ? 0 : 1) + - (IS_TRUE( m_private_and_protected_int_array[0].is_value_initialized() ) ? 0 : 1 ) + - (IS_TRUE( m_private_and_protected_int_array[1].is_value_initialized() ) ? 0 : 1 ); - (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_user_defined_destructor_holder_array[1]) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_virtual_destructor_holder) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_virtual_destructor_holder_array[0]) ) ? 0 : 1) + - (IS_TRUE( is_value_initialized(m_virtual_destructor_holder_array[1]) ) ? 0 : 1) + - (IS_TRUE( m_non_pod.is_value_initialized() ) ? 0 : 1) + - (IS_TRUE( m_non_pod_array[0].is_value_initialized() ) ? 0 : 1 ) + - (IS_TRUE( m_non_pod_array[1].is_value_initialized() ) ? 0 : 1 ) + - (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union_array[0]) ) ? 0 : 1 ) + - (IS_TRUE( is_zero_initialized(m_pod_struct_and_int_union_array[1]) ) ? 0 : 1 ) + - (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union) ) ? 0 : 1) + - (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union_array[0]) ) ? 0 : 1 ) + - (IS_TRUE( is_zero_initialized(m_int_and_pod_struct_union_array[1]) ) ? 0 : 1 ); + (IS_VALUE_INITIALIZED(m_enum_holder) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_holder_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_holder_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned_char) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned_char_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned_char_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_short) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_short_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_short_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_unsigned_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_long) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_long_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_long_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_float) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_float_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_float_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_double) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_double_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_double_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_ptr) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_ptr_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_ptr_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct_holder) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct_holder_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_struct_holder_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_pod_struct) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_pod_struct_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_pod_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_pod) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_pod_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_pod_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_struct) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_struct_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_int_struct) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_int_struct_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_derived_int_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_holder_and_int) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_private_and_protected_int) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[0]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[1]) ? 0 : 1 ); + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_virtual_destructor_holder) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_virtual_destructor_holder_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_virtual_destructor_holder_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_non_pod) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_non_pod_array[0]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_non_pod_array[1]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union_array[0]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union_array[1]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union_array[0]) ? 0 : 1 ) + + (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union_array[1]) ? 0 : 1 ); return num_failures; } }; @@ -419,7 +458,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 5." + << "\nDetected by boost_no_complete_value_initialization::test() revision 6." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From d35bde21e8008932f837e6c77ae99865b0f2a7a1 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 07:42:00 +0000 Subject: [PATCH 123/435] Fixed silly bug of mine in value_initializer(), detected by darwin-4.0.1/g++ warning, "value computed is not used" [SVN r61193] --- test/boost_no_com_value_init.ipp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index afdcbc7f..67095cf6 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -426,7 +426,7 @@ namespace boost_no_complete_value_initialization (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[1]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_private_and_protected_int) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[0]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[1]) ? 0 : 1 ); + (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[1]) ? 0 : 1 ) + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[0]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[1]) ? 0 : 1) + @@ -458,7 +458,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 6." + << "\nDetected by boost_no_complete_value_initialization::test() revision 7." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From bb8216ed39a0ce7e1002e44615f8ced3f7bbe997 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 10:00:44 +0000 Subject: [PATCH 124/435] Added value-initialization tests to possibly reproduce http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916. [SVN r61195] --- test/boost_no_com_value_init.ipp | 69 +++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 67095cf6..f1e0c1e2 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -101,6 +101,47 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + struct char_array_struct + { + char data[42]; + }; + + bool is_value_initialized(const char_array_struct& arg) + { + for ( unsigned i = 0; i < sizeof(arg.data); ++i) + { + if ( arg.data[i] != 0 ) + { + return false; + } + } + return true; + } + + + // Equivalent to the Stats class from GCC Bug 33916, + // "Default constructor fails to initialize array members", reported by + // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 + class int_array_pair + { + friend bool is_value_initialized(const int_array_pair& arg); + private: + int first[12]; + int second[12]; + }; + + bool is_value_initialized(const int_array_pair& arg) + { + for ( unsigned i = 0; i < 12; ++i) + { + if ( (arg.first[i] != 0) || (arg.second[i] != 0) ) + { + return false; + } + } + return true; + } + union pod_struct_and_int_union { pod_struct first; @@ -297,6 +338,10 @@ namespace boost_no_complete_value_initialization derived_struct m_derived_struct_array[2]; derived_int_struct m_derived_int_struct; derived_int_struct m_derived_int_struct_array[2]; + char_array_struct m_char_array_struct; + char_array_struct m_char_array_struct_array[2]; + int_array_pair m_int_array_pair; + int_array_pair m_int_array_pair_array[2]; enum_holder_and_int m_enum_holder_and_int; enum_holder_and_int m_enum_holder_and_int_array[2]; private_and_protected_int m_private_and_protected_int; @@ -349,6 +394,10 @@ namespace boost_no_complete_value_initialization m_derived_struct_array(), m_derived_int_struct(), m_derived_int_struct_array(), + m_char_array_struct(), + m_char_array_struct_array(), + m_int_array_pair(), + m_int_array_pair_array(), m_enum_holder_and_int(), m_enum_holder_and_int_array(), m_private_and_protected_int(), @@ -421,6 +470,12 @@ namespace boost_no_complete_value_initialization (IS_VALUE_INITIALIZED(m_derived_int_struct) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_derived_int_struct_array[0]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_derived_int_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char_array_struct) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char_array_struct_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_char_array_struct_array[1]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_array_pair) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_array_pair_array[0]) ? 0 : 1) + + (IS_VALUE_INITIALIZED(m_int_array_pair_array[1]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_and_int) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[0]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[1]) ? 0 : 1) + @@ -446,9 +501,21 @@ namespace boost_no_complete_value_initialization } }; + // Equivalent to the dirty_stack() function from GCC Bug 33916, + // "Default constructor fails to initialize array members", reported by + // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 + void dirty_stack() + { + unsigned char array_on_stack[sizeof(value_initializer) + 256]; + for (unsigned i = 0; i < sizeof(array_on_stack); ++i) + { + array_on_stack[i] = 0x11; + } + } int test() { + dirty_stack(); // Check both value-initialization on the stack and on the heap: const unsigned num_failures_on_stack = value_initializer().check(); const value_initializer* const ptr = new value_initializer(); @@ -458,7 +525,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 7." + << "\nDetected by boost_no_complete_value_initialization::test() revision 8." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From b124875c50d460d6d86353a3840e17cccca4f974 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 12:33:56 +0000 Subject: [PATCH 125/435] Added value-initialization test to try to reproduce http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 [SVN r61196] --- test/boost_no_com_value_init.ipp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index f1e0c1e2..87d3fd66 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -301,7 +301,11 @@ namespace boost_no_complete_value_initialization // of an empty set of parentheses, and allows checking whether // each of them is indeed value-initialized, as specified by // the C++ Standard ([dcl.init]). - class value_initializer + // + // Note: its base class, int_struct, is there to try to reproduce GCC Bug 30111, + // "Value-initialization of POD base class doesn't initialize members", + // reported by Jonathan Wakely: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 + class value_initializer: int_struct { private: enum_holder m_enum_holder; @@ -360,6 +364,7 @@ namespace boost_no_complete_value_initialization public: value_initializer() : + int_struct(), m_enum_holder(), m_enum_holder_array(), m_enum(), @@ -419,6 +424,7 @@ namespace boost_no_complete_value_initialization unsigned check() const { const unsigned num_failures = + (IS_VALUE_INITIALIZED(data) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_array[0]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_array[1]) ? 0 : 1) + @@ -525,7 +531,7 @@ namespace boost_no_complete_value_initialization { std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 8." + << "\nDetected by boost_no_complete_value_initialization::test() revision 9." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From 580762f38854935a59763a708bcbf0e6aaa1b682 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 13:01:28 +0000 Subject: [PATCH 126/435] Added more links to value-initialization bug reports: https://connect.microsoft.com/VisualStudio/feedback/details/100744 and http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 [SVN r61197] --- test/boost_no_com_value_init.ipp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 87d3fd66..dab770a2 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -72,6 +72,10 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + // Equivalent to the struct TData from CodeGear bug report 51854 + // "Value-initialization: POD struct should be zero-initialized", + // reported by me (Niels Dekker, LKEB) in 2007: + // http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 struct int_struct { int data; @@ -120,7 +124,7 @@ namespace boost_no_complete_value_initialization // Equivalent to the Stats class from GCC Bug 33916, - // "Default constructor fails to initialize array members", reported by + // "Default constructor fails to initialize array members", reported in 2007 by // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 class int_array_pair { @@ -195,6 +199,10 @@ namespace boost_no_complete_value_initialization // An aggregate struct of a non-POD class and an int. + // Similar to struct A from Microsoft Visual C++ bug report 100744, + // "Value-initialization in new-expression", reported in 2005 by + // Pavel Kuznetsov (MetaCommunications Engineering): + // https://connect.microsoft.com/VisualStudio/feedback/details/100744 struct enum_holder_and_int { enum_holder e; @@ -303,8 +311,8 @@ namespace boost_no_complete_value_initialization // the C++ Standard ([dcl.init]). // // Note: its base class, int_struct, is there to try to reproduce GCC Bug 30111, - // "Value-initialization of POD base class doesn't initialize members", - // reported by Jonathan Wakely: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 + // "Value-initialization of POD base class doesn't initialize members", reported + // by Jonathan Wakely in 2006: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 class value_initializer: int_struct { private: @@ -508,7 +516,7 @@ namespace boost_no_complete_value_initialization }; // Equivalent to the dirty_stack() function from GCC Bug 33916, - // "Default constructor fails to initialize array members", reported by + // "Default constructor fails to initialize array members", reported in 2007 by // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 void dirty_stack() { From 5bc1a8e9fbe98caec1835336ff7e9852132768db Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 15:27:32 +0000 Subject: [PATCH 127/435] Added link to a new value-initialization compiler bug report: http://qc.embarcadero.com/wc/qcmain.aspx?d=83751 [SVN r61203] --- test/boost_no_com_value_init.ipp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index dab770a2..0365fcd9 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -72,7 +72,7 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } - // Equivalent to the struct TData from CodeGear bug report 51854 + // Equivalent to the struct TData from CodeGear bug report 51854, // "Value-initialization: POD struct should be zero-initialized", // reported by me (Niels Dekker, LKEB) in 2007: // http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 @@ -372,6 +372,15 @@ namespace boost_no_complete_value_initialization public: value_initializer() : + // Note: CodeGear/Borland may produce a warning, W8039, for each data member + // whose type is an array type, saying "Constructor initializer list ignored". + // If it does, it probably won't value-initialize those arrays, as reported + // by me (Niels Dekker, LKEB) in 2010, report 83751, "Value-initialization: + // arrays should have each element value-initialized", + // http://qc.embarcadero.com/wc/qcmain.aspx?d=83751 + // On the other hand, Microsoft Visual C++ may produce warnings of type C4351, + // saying "new behavior: elements of array '...' will be default initialized", + // which is actually the right behavior! int_struct(), m_enum_holder(), m_enum_holder_array(), From 2e99752a98419f39502ef54034dff04a058285c1 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 20:33:49 +0000 Subject: [PATCH 128/435] Added check of an lvalue value_initializer object on the stack. [SVN r61209] --- test/boost_no_com_value_init.ipp | 33 ++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 0365fcd9..fd48dc01 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -538,17 +538,38 @@ namespace boost_no_complete_value_initialization int test() { + // Check value-initialization of a temporary object, an object on the stack, + // and one on the heap: dirty_stack(); - // Check both value-initialization on the stack and on the heap: - const unsigned num_failures_on_stack = value_initializer().check(); + const unsigned num_failures_of_a_temporary = value_initializer().check(); + if ( num_failures_of_a_temporary > 0 ) + { + std::cout << " Number of initialization failures of a temporary: " + << num_failures_of_a_temporary << std::endl; + } + dirty_stack(); + value_initializer object_on_stack; + const unsigned num_failures_on_stack = object_on_stack.check(); + if ( num_failures_of_a_temporary > 0 || num_failures_on_stack > 0 ) + { + std::cout << " Number of initialization failures on the stack: " + << num_failures_on_stack << std::endl; + } const value_initializer* const ptr = new value_initializer(); const unsigned num_failures_on_heap = ptr->check(); delete ptr; - if ( num_failures_on_stack > 0 || num_failures_on_heap > 0 ) + + const unsigned total_num_failures = num_failures_of_a_temporary + num_failures_on_stack + num_failures_on_heap; + if ( total_num_failures > 0 ) { - std::cout << "Number of initialization failures on the stack: " << num_failures_on_stack - << "\nNumber of initialization failures on the heap: " << num_failures_on_heap - << "\nDetected by boost_no_complete_value_initialization::test() revision 9." + std::cout << " Number of initialization failures on the heap: " + << num_failures_on_heap + << "\n Total number of initialization failures (" + << num_failures_of_a_temporary << '+' + << num_failures_on_stack << '+' + << num_failures_on_heap << "): " + << total_num_failures + << "\nDetected by boost_no_complete_value_initialization::test() revision 10." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From 3e7eb180ed82303cbd980e91fce9dac2e66535f7 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 11 Apr 2010 21:01:41 +0000 Subject: [PATCH 129/435] Restyled output of value-initialization test. [SVN r61210] --- test/boost_no_com_value_init.ipp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index fd48dc01..f7e58a2b 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -298,7 +298,7 @@ namespace boost_no_complete_value_initialization { if ( ! is_variable_value_initializated ) { - std::cout << "Note: " << variable_name << " is not value-initialized." << std::endl; + std::cout << "Note: Failed to value-initialize " << variable_name << '.' << std::endl; } return is_variable_value_initializated; } @@ -544,7 +544,7 @@ namespace boost_no_complete_value_initialization const unsigned num_failures_of_a_temporary = value_initializer().check(); if ( num_failures_of_a_temporary > 0 ) { - std::cout << " Number of initialization failures of a temporary: " + std::cout << "- Number of initialization failures of a temporary: " << num_failures_of_a_temporary << std::endl; } dirty_stack(); @@ -552,7 +552,7 @@ namespace boost_no_complete_value_initialization const unsigned num_failures_on_stack = object_on_stack.check(); if ( num_failures_of_a_temporary > 0 || num_failures_on_stack > 0 ) { - std::cout << " Number of initialization failures on the stack: " + std::cout << "- Number of initialization failures on the stack: " << num_failures_on_stack << std::endl; } const value_initializer* const ptr = new value_initializer(); @@ -562,14 +562,14 @@ namespace boost_no_complete_value_initialization const unsigned total_num_failures = num_failures_of_a_temporary + num_failures_on_stack + num_failures_on_heap; if ( total_num_failures > 0 ) { - std::cout << " Number of initialization failures on the heap: " + std::cout << "- Number of initialization failures on the heap: " << num_failures_on_heap - << "\n Total number of initialization failures (" + << "\n-- Total number of initialization failures (" << num_failures_of_a_temporary << '+' << num_failures_on_stack << '+' << num_failures_on_heap << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 10." + << "\nDetected by boost_no_complete_value_initialization::test() revision 11." << std::endl; } return static_cast(num_failures_on_stack + num_failures_on_heap); From b9ead6a415bcd2862e353675a49f6fe2579d2352 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 12 Apr 2010 19:03:20 +0000 Subject: [PATCH 130/435] Fixed boost_no_complete_value_initialization::test() return value. Removed useless #include. Added more comment and more newlines. [SVN r61229] --- test/boost_no_com_value_init.ipp | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index f7e58a2b..b6041a36 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -10,13 +10,13 @@ // DESCRIPTION: The C++ compiler does not to have implemented value-initialization completely. // See also boost/libs/utility/value_init.htm#compiler_issues -#include #include namespace boost_no_complete_value_initialization { enum enum_type { negative_number = -1, magic_number = 42 }; + // A POD struct. struct pod_struct { @@ -47,6 +47,7 @@ namespace boost_no_complete_value_initialization arg.p == 0; } + struct derived_pod_struct: pod_struct { int derived_data; @@ -58,6 +59,7 @@ namespace boost_no_complete_value_initialization return arg.derived_data == 0 && is_value_initialized(base_subobject); } + struct empty_struct { }; @@ -72,6 +74,7 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + // Equivalent to the struct TData from CodeGear bug report 51854, // "Value-initialization: POD struct should be zero-initialized", // reported by me (Niels Dekker, LKEB) in 2007: @@ -86,6 +89,7 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + struct int_struct_holder { int_struct data; @@ -96,6 +100,7 @@ namespace boost_no_complete_value_initialization return is_value_initialized(arg.data); } + struct derived_int_struct: int_struct { }; @@ -105,6 +110,7 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + struct char_array_struct { char data[42]; @@ -146,6 +152,7 @@ namespace boost_no_complete_value_initialization return true; } + union pod_struct_and_int_union { pod_struct first; @@ -192,10 +199,10 @@ namespace boost_no_complete_value_initialization } }; - bool is_value_initialized(const enum_holder& arg) - { - return arg.is_value_initialized(); - } + bool is_value_initialized(const enum_holder& arg) + { + return arg.is_value_initialized(); + } // An aggregate struct of a non-POD class and an int. @@ -305,6 +312,7 @@ namespace boost_no_complete_value_initialization #define IS_VALUE_INITIALIZED(value) is_true( is_value_initialized(value), #value) + // value_initializer initializes each of its data members by means // of an empty set of parentheses, and allows checking whether // each of them is indeed value-initialized, as specified by @@ -370,6 +378,8 @@ namespace boost_no_complete_value_initialization int_and_pod_struct_union m_int_and_pod_struct_union_array[2]; public: + // Default constructor. Tries to value-initialize its base subobject and all + // of its data.members. value_initializer() : // Note: CodeGear/Borland may produce a warning, W8039, for each data member @@ -441,7 +451,7 @@ namespace boost_no_complete_value_initialization unsigned check() const { const unsigned num_failures = - (IS_VALUE_INITIALIZED(data) ? 0 : 1) + + (IS_VALUE_INITIALIZED(int_struct::data) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_array[0]) ? 0 : 1) + (IS_VALUE_INITIALIZED(m_enum_holder_array[1]) ? 0 : 1) + @@ -524,6 +534,7 @@ namespace boost_no_complete_value_initialization } }; + // Equivalent to the dirty_stack() function from GCC Bug 33916, // "Default constructor fails to initialize array members", reported in 2007 by // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 @@ -536,6 +547,7 @@ namespace boost_no_complete_value_initialization } } + int test() { // Check value-initialization of a temporary object, an object on the stack, @@ -559,7 +571,9 @@ namespace boost_no_complete_value_initialization const unsigned num_failures_on_heap = ptr->check(); delete ptr; - const unsigned total_num_failures = num_failures_of_a_temporary + num_failures_on_stack + num_failures_on_heap; + const unsigned total_num_failures = num_failures_of_a_temporary + + num_failures_on_stack + num_failures_on_heap; + if ( total_num_failures > 0 ) { std::cout << "- Number of initialization failures on the heap: " @@ -569,10 +583,10 @@ namespace boost_no_complete_value_initialization << num_failures_on_stack << '+' << num_failures_on_heap << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 11." + << "\nDetected by boost_no_complete_value_initialization::test() revision 12." << std::endl; } - return static_cast(num_failures_on_stack + num_failures_on_heap); + return static_cast(total_num_failures); } } // End of namespace. From 7254f020105028883d242f2cbe2f2fcee1c482a8 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 14 Apr 2010 08:08:11 +0000 Subject: [PATCH 131/435] Replaced IS_VALUE_INITIALIZED by FAILED_TO_VALUE_INITIALIZE, to increase code readability. [SVN r61270] --- test/boost_no_com_value_init.ipp | 180 ++++++++++++++++--------------- 1 file changed, 92 insertions(+), 88 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index b6041a36..457d4a50 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -298,19 +298,23 @@ namespace boost_no_complete_value_initialization } - // The first argument should specify whether a specific variable is value-initializated. - // The second argument should specify the name of the variable. - // Passes the information to standard output, if the variable is not value-initializated. - bool is_true(bool is_variable_value_initializated, const char *const variable_name) + // Returns zero when the specified object is value-initializated, and one otherwise. + // Prints a message to standard output if the value-initialization has failed. + template + unsigned failed_to_value_initialized(const T& object, const char *const object_name) { - if ( ! is_variable_value_initializated ) + if ( is_value_initialized(object) ) { - std::cout << "Note: Failed to value-initialize " << variable_name << '.' << std::endl; + return 0u; + } + else + { + std::cout << "Note: Failed to value-initialize " << object_name << '.' << std::endl; + return 1u; } - return is_variable_value_initializated; } -#define IS_VALUE_INITIALIZED(value) is_true( is_value_initialized(value), #value) +#define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value) // value_initializer initializes each of its data members by means @@ -451,85 +455,85 @@ namespace boost_no_complete_value_initialization unsigned check() const { const unsigned num_failures = - (IS_VALUE_INITIALIZED(int_struct::data) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned_char) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned_char_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned_char_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_short) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_short_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_short_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_unsigned_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_long) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_long_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_long_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_float) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_float_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_float_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_double) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_double_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_double_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_ptr) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_ptr_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_ptr_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct_holder) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct_holder_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_struct_holder_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_pod_struct) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_pod_struct_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_pod_struct_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_pod) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_pod_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_pod_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_struct) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_struct_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_struct_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_int_struct) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_int_struct_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_derived_int_struct_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char_array_struct) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char_array_struct_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_char_array_struct_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_array_pair) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_array_pair_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_array_pair_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder_and_int) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_enum_holder_and_int_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_private_and_protected_int) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[0]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_private_and_protected_int_array[1]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_user_defined_destructor_holder_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_virtual_destructor_holder) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_virtual_destructor_holder_array[0]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_virtual_destructor_holder_array[1]) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_non_pod) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_non_pod_array[0]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_non_pod_array[1]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union_array[0]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_pod_struct_and_int_union_array[1]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union) ? 0 : 1) + - (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union_array[0]) ? 0 : 1 ) + - (IS_VALUE_INITIALIZED(m_int_and_pod_struct_union_array[1]) ? 0 : 1 ); + FAILED_TO_VALUE_INITIALIZE(int_struct::data) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_enum) + + FAILED_TO_VALUE_INITIALIZE(m_enum_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_char) + + FAILED_TO_VALUE_INITIALIZE(m_char_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_short) + + FAILED_TO_VALUE_INITIALIZE(m_short_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_short_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int) + + FAILED_TO_VALUE_INITIALIZE(m_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_long) + + FAILED_TO_VALUE_INITIALIZE(m_long_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_long_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_float) + + FAILED_TO_VALUE_INITIALIZE(m_float_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_float_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_double) + + FAILED_TO_VALUE_INITIALIZE(m_double_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_double_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_array_pair) + + FAILED_TO_VALUE_INITIALIZE(m_int_array_pair_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_array_pair_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[1]); return num_failures; } }; @@ -583,7 +587,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_stack << '+' << num_failures_on_heap << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 12." + << "\nDetected by boost_no_complete_value_initialization::test() revision 13." << std::endl; } return static_cast(total_num_failures); From 4dc213e6e2b373cfa968c9a86554b27ac1d07da8 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 14 Apr 2010 09:35:51 +0000 Subject: [PATCH 132/435] Added value-initialization test for temporary objects. [SVN r61272] --- test/boost_no_com_value_init.ipp | 79 ++++++++++++++++++++++++++------ 1 file changed, 66 insertions(+), 13 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 457d4a50..238d3f0b 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -538,6 +538,38 @@ namespace boost_no_complete_value_initialization } }; + // Checks value-initialization of a number of small temporary objects. + // Returns the number of failures. + unsigned check_value_initialization_of_temporaries() + { + const unsigned num_failures = + FAILED_TO_VALUE_INITIALIZE(enum_holder()) + + FAILED_TO_VALUE_INITIALIZE(enum_type()) + + FAILED_TO_VALUE_INITIALIZE(char()) + + FAILED_TO_VALUE_INITIALIZE(short()) + + FAILED_TO_VALUE_INITIALIZE(int()) + + FAILED_TO_VALUE_INITIALIZE(unsigned()) + + FAILED_TO_VALUE_INITIALIZE(long()) + + FAILED_TO_VALUE_INITIALIZE(float()) + + FAILED_TO_VALUE_INITIALIZE(double()) + + FAILED_TO_VALUE_INITIALIZE(int_struct()) + + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_pod_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_struct()) + + FAILED_TO_VALUE_INITIALIZE(derived_int_struct()) + + FAILED_TO_VALUE_INITIALIZE(char_array_struct()) + + FAILED_TO_VALUE_INITIALIZE(int_array_pair()) + + FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) + + FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) + + FAILED_TO_VALUE_INITIALIZE(user_defined_destructor_holder()) + + FAILED_TO_VALUE_INITIALIZE(virtual_destructor_holder()) + + FAILED_TO_VALUE_INITIALIZE(non_pod_class()) + + FAILED_TO_VALUE_INITIALIZE(pod_struct_and_int_union()) + + FAILED_TO_VALUE_INITIALIZE(int_and_pod_struct_union()); + return num_failures; + } + // Equivalent to the dirty_stack() function from GCC Bug 33916, // "Default constructor fails to initialize array members", reported in 2007 by @@ -554,40 +586,61 @@ namespace boost_no_complete_value_initialization int test() { - // Check value-initialization of a temporary object, an object on the stack, - // and one on the heap: + // Check value-initialization of the data members of a temporary object, + // an object on the stack, an object on the heap, and a number of small + // temporary objects. + + unsigned total_num_failures = 0; + dirty_stack(); const unsigned num_failures_of_a_temporary = value_initializer().check(); - if ( num_failures_of_a_temporary > 0 ) + + total_num_failures += num_failures_of_a_temporary; + if ( total_num_failures > 0 ) { - std::cout << "- Number of initialization failures of a temporary: " + std::cout << "- Number of member initialization failures of a temporary: " << num_failures_of_a_temporary << std::endl; } dirty_stack(); value_initializer object_on_stack; const unsigned num_failures_on_stack = object_on_stack.check(); - if ( num_failures_of_a_temporary > 0 || num_failures_on_stack > 0 ) + + total_num_failures += num_failures_on_stack; + if ( total_num_failures > 0 ) { - std::cout << "- Number of initialization failures on the stack: " + std::cout << "- Number of member initialization failures on the stack: " << num_failures_on_stack << std::endl; } const value_initializer* const ptr = new value_initializer(); const unsigned num_failures_on_heap = ptr->check(); delete ptr; - const unsigned total_num_failures = num_failures_of_a_temporary + - num_failures_on_stack + num_failures_on_heap; + total_num_failures += num_failures_on_heap; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of member initialization failures on the heap: " + << num_failures_on_heap << std::endl; + } + + dirty_stack(); + const unsigned num_failures_of_temporaries = check_value_initialization_of_temporaries(); + + total_num_failures += num_failures_of_temporaries; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of initialization failures of temporary objects: " + << num_failures_of_temporaries << std::endl; + } if ( total_num_failures > 0 ) { - std::cout << "- Number of initialization failures on the heap: " - << num_failures_on_heap - << "\n-- Total number of initialization failures (" + std::cout << "-- Total number of initialization failures (" << num_failures_of_a_temporary << '+' << num_failures_on_stack << '+' - << num_failures_on_heap << "): " + << num_failures_on_heap << '+' + << num_failures_of_temporaries << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 13." + << "\nDetected by boost_no_complete_value_initialization::test() revision 14." << std::endl; } return static_cast(total_num_failures); From 70f95b9245da8ee8907f770ba2fcd856c9b7df7c Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Thu, 15 Apr 2010 17:12:14 +0000 Subject: [PATCH 133/435] Added value-initialization tests for 2D and 3D arrays. Mentioned newly submitted Borland/CodeGear bug report, http://qc.embarcadero.com/wc/qcmain.aspx?d=83851 [SVN r61301] --- test/boost_no_com_value_init.ipp | 57 +++++++++++++++++++++++++++----- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 238d3f0b..990a219e 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -290,6 +290,36 @@ namespace boost_no_complete_value_initialization } + typedef char _2d_char_array_type[2][3]; + + bool is_value_initialized(const _2d_char_array_type& arg) + { + for(unsigned i = 0; i < sizeof(_2d_char_array_type); ++i) + { + if ((*arg)[i] != 0) + { + return false; + } + } + return true; + } + + typedef char _3d_char_array_type[2][3][4]; + + bool is_value_initialized(const _3d_char_array_type& arg) + { + for(unsigned i = 0; i < sizeof(_3d_char_array_type); ++i) + { + if ((**arg)[i] != 0) + { + return false; + } + } + return true; + } + + + // For built-in types and enumerated types. template bool is_value_initialized(const T& arg) @@ -336,6 +366,8 @@ namespace boost_no_complete_value_initialization char m_char_array[2]; unsigned char m_unsigned_char; unsigned char m_unsigned_char_array[2]; + _2d_char_array_type m_2d_char_array; + _3d_char_array_type m_3d_char_array; short m_short; short m_short_array[2]; int m_int; @@ -356,8 +388,8 @@ namespace boost_no_complete_value_initialization int_struct m_int_struct_holder_array[2]; pod_struct m_pod_struct; pod_struct m_pod_struct_array[2]; - derived_pod_struct m_derived_pod; - derived_pod_struct m_derived_pod_array[2]; + derived_pod_struct m_derived_pod_struct; + derived_pod_struct m_derived_pod_struct_array[2]; derived_struct m_derived_struct; derived_struct m_derived_struct_array[2]; derived_int_struct m_derived_int_struct; @@ -402,6 +434,8 @@ namespace boost_no_complete_value_initialization m_enum_array(), m_char(), m_char_array(), + m_2d_char_array(), + m_3d_char_array(), m_unsigned_char(), m_unsigned_char_array(), m_short(), @@ -424,8 +458,8 @@ namespace boost_no_complete_value_initialization m_int_struct_holder_array(), m_pod_struct(), m_pod_struct_array(), - m_derived_pod(), - m_derived_pod_array(), + m_derived_pod_struct(), + m_derived_pod_struct_array(), m_derived_struct(), m_derived_struct_array(), m_derived_int_struct(), @@ -465,6 +499,8 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_char) + FAILED_TO_VALUE_INITIALIZE(m_char_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_char_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_2d_char_array) + + FAILED_TO_VALUE_INITIALIZE(m_3d_char_array) + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char) + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[1]) + @@ -498,9 +534,9 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_pod_struct) + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[1]) + - FAILED_TO_VALUE_INITIALIZE(m_derived_pod) + - FAILED_TO_VALUE_INITIALIZE(m_derived_pod_array[0]) + - FAILED_TO_VALUE_INITIALIZE(m_derived_pod_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_derived_struct) + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[1]) + @@ -562,6 +598,11 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(int_array_pair()) + FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) + FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) + + // The following line, doing user_defined_destructor_holder(), causes + // a compilation error on Embarcadero 2010 (Borland/CodeGear 6.21), + // as reported by me (Niels Dekker, LKEB) in 2010, bug report 83851, + // "Value-initialized temporary triggers internal backend error C1798", + // http://qc.embarcadero.com/wc/qcmain.aspx?d=83851 FAILED_TO_VALUE_INITIALIZE(user_defined_destructor_holder()) + FAILED_TO_VALUE_INITIALIZE(virtual_destructor_holder()) + FAILED_TO_VALUE_INITIALIZE(non_pod_class()) + @@ -640,7 +681,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_heap << '+' << num_failures_of_temporaries << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 14." + << "\nDetected by boost_no_complete_value_initialization::test() revision 15." << std::endl; } return static_cast(total_num_failures); From 18af1c798d2c2999c52cf9b69e2b2c9e9ff81e96 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 17 Apr 2010 08:38:01 +0000 Subject: [PATCH 134/435] Avoided IBM/XL warning about omitted keyword "private" for base class "int_struct". Added note about IBM/XL V10.1 regression failure. [SVN r61332] --- test/boost_no_com_value_init.ipp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 990a219e..b3ea3862 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -355,7 +355,7 @@ namespace boost_no_complete_value_initialization // Note: its base class, int_struct, is there to try to reproduce GCC Bug 30111, // "Value-initialization of POD base class doesn't initialize members", reported // by Jonathan Wakely in 2006: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 - class value_initializer: int_struct + class value_initializer: private int_struct { private: enum_holder m_enum_holder; @@ -596,6 +596,11 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(derived_int_struct()) + FAILED_TO_VALUE_INITIALIZE(char_array_struct()) + FAILED_TO_VALUE_INITIALIZE(int_array_pair()) + + // IBM's XL V10.1.0.0 may fail to value-initialize a temporary of a non-POD + // type like enum_holder_and_int, virtual_destructor_holder, or non_pod_class, + // as appeared at the Boost Config/trunk regression page in April 2010. + // Michael Wong (IBM Canada Ltd) confirmed the issue to me (Niels Dekker, LKEB), + // and gave it high priority. FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) + FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) + // The following line, doing user_defined_destructor_holder(), causes @@ -681,7 +686,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_heap << '+' << num_failures_of_temporaries << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 15." + << "\nDetected by boost_no_complete_value_initialization::test() revision 16." << std::endl; } return static_cast(total_num_failures); From e2e2e4a6fb54029d03d8017103d15f6f871973fb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Apr 2010 17:26:06 +0000 Subject: [PATCH 135/435] Tweak VC10 configuration settings. Update BOOST_NO_DECLTYPE test with VC10 bug case. [SVN r61432] --- include/boost/config/compiler/visualc.hpp | 11 +++++----- test/boost_no_decltype.ipp | 25 +++++++++++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index f8cc1096..46c9ef0b 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -159,31 +159,30 @@ #if _MSC_VER < 1600 #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_DECLTYPE #define BOOST_NO_LAMBDAS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 // C++0x features not supported by any versions -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DECLTYPE #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_INITIALIZER_LISTS -#define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES - // // prefix and suffix headers: // diff --git a/test/boost_no_decltype.ipp b/test/boost_no_decltype.ipp index c712e892..f76db77e 100644 --- a/test/boost_no_decltype.ipp +++ b/test/boost_no_decltype.ipp @@ -1,3 +1,4 @@ + // (C) Copyright Beman Dawes 2008 // Use, modification and distribution are subject to the @@ -12,10 +13,34 @@ namespace boost_no_decltype { +struct test_class +{ + test_class() {} +}; + +test_class get_test_class() +{ + return test_class(); +} + +template +void baz(F f) +{ + // + // Strangely VC-10 deduces the return type of F + // to be "test_class&". Remove the constructor + // from test_class and then decltype does work OK!! + // + typedef decltype(f()) res; + res r; +} + int test() { int i; decltype(i) j; + decltype(get_test_class()) k; + baz(get_test_class); return 0; } From 668b3fccaef7460036a1a83a9c90df8cbe76c4ab Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 20 Apr 2010 17:48:16 +0000 Subject: [PATCH 136/435] Fixes #4115: sometimes VC++ doesn't put typeinfo in namespace std. [SVN r61434] --- include/boost/config/stdlib/dinkumware.hpp | 5 +++++ include/boost/config/suffix.hpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index ab770599..d87f38b1 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -86,6 +86,11 @@ # define BOOST_NO_STD_LOCALE #endif +#include +#if !_HAS_EXCEPTIONS +# define BOOST_NO_STD_TYPEINFO +#endif + // C++0x headers implemented in 520 (as shipped by Microsoft) // #if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520 diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 9e4d0788..a61a0cb5 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -554,6 +554,12 @@ namespace boost{ #endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +// When BOOST_NO_STD_TYPEINFO is defined, we can just import +// the global definition into std namespace: +#ifdef BOOST_NO_STD_TYPEINFO +#include +namespace std{ using ::typeinfo; } +#endif // ---------------------------------------------------------------------------// From 0c1feee19f25a042626686d7d72d4fa116691e4d Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 20 Apr 2010 18:31:35 +0000 Subject: [PATCH 137/435] Extended value-initialization test by adding function pointers, member function pointers, bit-fiends and long double. Thanks to the HCC C gebruikersgroep! [SVN r61436] --- test/boost_no_com_value_init.ipp | 100 +++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 6 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index b3ea3862..754ea6b3 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -15,20 +15,25 @@ namespace boost_no_complete_value_initialization { enum enum_type { negative_number = -1, magic_number = 42 }; - + + class incomplete_class; + + typedef int (*function_ptr_type)(int); + typedef int (incomplete_class::*member_function_ptr_type)(int); // A POD struct. struct pod_struct { enum_type e; - char c; - unsigned char uc; + char c; + unsigned char uc; short s; int i; unsigned u; long l; - float f; - double d; + float f; + double d; + long double ld; void* p; }; @@ -75,6 +80,38 @@ namespace boost_no_complete_value_initialization } + struct bit_field_struct + { + bool b : 1; + char c : 7; + unsigned u: 8 * sizeof(unsigned) - 1; + }; + + bool is_value_initialized(const bit_field_struct& arg) + { + return arg.b == false && arg.c == '\0'&& arg.u == 0U; + } + + struct function_ptr_struct + { + function_ptr_type data; + }; + + bool is_value_initialized(const function_ptr_struct& arg) + { + return arg.data == 0; + } + + struct member_function_ptr_struct + { + member_function_ptr_type data; + }; + + bool is_value_initialized(const member_function_ptr_struct& arg) + { + return arg.data == 0; + } + // Equivalent to the struct TData from CodeGear bug report 51854, // "Value-initialization: POD struct should be zero-initialized", // reported by me (Niels Dekker, LKEB) in 2007: @@ -380,8 +417,20 @@ namespace boost_no_complete_value_initialization float m_float_array[2]; double m_double; double m_double_array[2]; + long double m_long_double; + long double m_long_double_array[2]; void* m_ptr; void* m_ptr_array[2]; + function_ptr_type m_function_ptr; + function_ptr_type m_function_ptr_array[2]; + function_ptr_struct m_function_ptr_struct; + function_ptr_struct m_function_ptr_struct_array[2]; + member_function_ptr_type m_member_function_ptr; + member_function_ptr_type m_member_function_ptr_array[2]; + member_function_ptr_struct m_member_function_ptr_struct; + member_function_ptr_struct m_member_function_ptr_struct_array[2]; + bit_field_struct m_bit_field_struct; + bit_field_struct m_bit_field_struct_array[2]; int_struct m_int_struct; int_struct m_int_struct_array[2]; int_struct m_int_struct_holder; @@ -450,8 +499,20 @@ namespace boost_no_complete_value_initialization m_float_array(), m_double(), m_double_array(), + m_long_double(), + m_long_double_array(), m_ptr(), m_ptr_array(), + m_function_ptr(), + m_function_ptr_array(), + m_function_ptr_struct(), + m_function_ptr_struct_array(), + m_member_function_ptr(), + m_member_function_ptr_array(), + m_member_function_ptr_struct(), + m_member_function_ptr_struct_array(), + m_bit_field_struct(), + m_bit_field_struct_array(), m_int_struct(), m_int_struct_array(), m_int_struct_holder(), @@ -522,9 +583,27 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_double) + FAILED_TO_VALUE_INITIALIZE(m_double_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_double_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_long_double) + + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_ptr) + FAILED_TO_VALUE_INITIALIZE(m_ptr_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_int_struct) + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[1]) + @@ -578,16 +657,25 @@ namespace boost_no_complete_value_initialization // Returns the number of failures. unsigned check_value_initialization_of_temporaries() { + typedef long double long_double_type; + typedef unsigned char unsigned_char_type; const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE(enum_holder()) + FAILED_TO_VALUE_INITIALIZE(enum_type()) + FAILED_TO_VALUE_INITIALIZE(char()) + + FAILED_TO_VALUE_INITIALIZE(unsigned_char_type()) + FAILED_TO_VALUE_INITIALIZE(short()) + FAILED_TO_VALUE_INITIALIZE(int()) + FAILED_TO_VALUE_INITIALIZE(unsigned()) + FAILED_TO_VALUE_INITIALIZE(long()) + FAILED_TO_VALUE_INITIALIZE(float()) + FAILED_TO_VALUE_INITIALIZE(double()) + + FAILED_TO_VALUE_INITIALIZE(long_double_type()) + + FAILED_TO_VALUE_INITIALIZE(bit_field_struct()) + + FAILED_TO_VALUE_INITIALIZE(function_ptr_type()) + + FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) + + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + @@ -686,7 +774,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_heap << '+' << num_failures_of_temporaries << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 16." + << "\nDetected by boost_no_complete_value_initialization::test() revision 17." << std::endl; } return static_cast(total_num_failures); From 4464cf9f478ea47a1ee3d57943928bf58ef9fcb8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 21 Apr 2010 08:49:21 +0000 Subject: [PATCH 138/435] Update some of the C++0x tests so they don't catch "fake" implementations. Update config for VC10 accordingly. Normalise use of BOOST_HAS_RVALUE_REFS - fixes #4112. [SVN r61453] --- include/boost/config/compiler/visualc.hpp | 6 +++--- include/boost/config/suffix.hpp | 7 +++++++ test/boost_no_char16_t.ipp | 3 ++- test/boost_no_char32_t.ipp | 2 +- test/boost_no_initializer_lists.ipp | 7 +++++++ 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 46c9ef0b..2238f476 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -162,13 +162,12 @@ #define BOOST_NO_LAMBDAS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T -#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 // C++0x features not supported by any versions +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS @@ -177,6 +176,7 @@ #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS #define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index a61a0cb5..13fd8007 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -314,6 +314,13 @@ # define BOOST_NO_INITIALIZER_LISTS #endif +// +// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_RVALUE_REFERENCES is not defined +// +#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS) +#define BOOST_HAS_RVALUE_REFS +#endif + // BOOST_HAS_ABI_HEADERS // This macro gets set if we have headers that fix the ABI, // and prevent ODR violations when linking to external libraries: diff --git a/test/boost_no_char16_t.ipp b/test/boost_no_char16_t.ipp index b519b825..6b8956da 100644 --- a/test/boost_no_char16_t.ipp +++ b/test/boost_no_char16_t.ipp @@ -1,3 +1,4 @@ + // (C) Copyright Beman Dawes 2008 // Use, modification and distribution are subject to the @@ -14,7 +15,7 @@ namespace boost_no_char16_t { int test() { - char16_t c; + const char16_t* p = u"abc"; return 0; } diff --git a/test/boost_no_char32_t.ipp b/test/boost_no_char32_t.ipp index 4bd05407..cee99a64 100644 --- a/test/boost_no_char32_t.ipp +++ b/test/boost_no_char32_t.ipp @@ -14,7 +14,7 @@ namespace boost_no_char32_t { int test() { - char32_t c; + const char32_t* p = U"abc"; return 0; } diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp index 31f03bd0..4bc96a28 100644 --- a/test/boost_no_initializer_lists.ipp +++ b/test/boost_no_initializer_lists.ipp @@ -11,11 +11,18 @@ // DESCRIPTION: If the compiler does not support C++0x initializer lists #include +#include namespace boost_no_initializer_lists { +void f(std::initializer_list) +{ +} + int test() { + std::vector v{"once", "upon", "a", "time"}; // See C++ std 8.5.4 + f( { 1, 2, 3, 4 } ); std::initializer_list x = { 1, 2 }; return 0; } From 890f65d37215cc16a3b4e8773dfceed09a093f81 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 21 Apr 2010 10:24:54 +0000 Subject: [PATCH 139/435] Fixed GCC warning in value_initializer(): "m_3d_char_array will be initialized after m_unsigned_char". [SVN r61455] --- test/boost_no_com_value_init.ipp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 754ea6b3..f0b095db 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -401,10 +401,10 @@ namespace boost_no_complete_value_initialization enum_type m_enum_array[2]; char m_char; char m_char_array[2]; - unsigned char m_unsigned_char; - unsigned char m_unsigned_char_array[2]; _2d_char_array_type m_2d_char_array; _3d_char_array_type m_3d_char_array; + unsigned char m_unsigned_char; + unsigned char m_unsigned_char_array[2]; short m_short; short m_short_array[2]; int m_int; @@ -774,7 +774,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_heap << '+' << num_failures_of_temporaries << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 17." + << "\nDetected by boost_no_complete_value_initialization::test() revision 18." << std::endl; } return static_cast(total_num_failures); From 99e762c031d7aaf7daa4c22c3afc49299fae649b Mon Sep 17 00:00:00 2001 From: Jeremiah Willcock Date: Wed, 21 Apr 2010 17:34:54 +0000 Subject: [PATCH 140/435] Fixed tab issue [SVN r61469] --- test/boost_no_com_value_init.ipp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index f0b095db..e0c6d1b4 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -94,7 +94,7 @@ namespace boost_no_complete_value_initialization struct function_ptr_struct { - function_ptr_type data; + function_ptr_type data; }; bool is_value_initialized(const function_ptr_struct& arg) @@ -104,7 +104,7 @@ namespace boost_no_complete_value_initialization struct member_function_ptr_struct { - member_function_ptr_type data; + member_function_ptr_type data; }; bool is_value_initialized(const member_function_ptr_struct& arg) From 5230022c0e8bfd9dbc600fd6e21e22bf161c7d84 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 23 Apr 2010 22:01:56 +0000 Subject: [PATCH 141/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to IBM XL C++ <= V10.1.0 (trunk), see #4080. [SVN r61516] --- include/boost/config/compiler/vacpp.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 01956d3a..36c8288f 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -30,6 +30,14 @@ # define BOOST_NO_INITIALIZER_LISTS #endif +#if (__IBMCPP__ <= 1010) +// XL C++ V10.1.0.0 may not always value-initialize a temporary object T(), +// when T is a non-POD aggregate class type. Michael Wong (IBM Canada Ltd) +// has confirmed this issue and gave it high priority. +// -- Niels Dekker (LKEB), 2010. +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif + // // On AIX thread support seems to be indicated by _THREAD_SAFE: // From fed1f22c6dbce6418aeb807154fc2e6cde5d4df4 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 25 Apr 2010 09:38:48 +0000 Subject: [PATCH 142/435] Added value-initialization tests for heap objects, added private_int_holder class, did some cosmetics, added link to https://connect.microsoft.com/VisualStudio/feedback/details/484295 [SVN r61552] --- test/boost_no_com_value_init.ipp | 172 ++++++++++++++++++++++++++----- 1 file changed, 144 insertions(+), 28 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index e0c6d1b4..2bb59464 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -69,6 +69,12 @@ namespace boost_no_complete_value_initialization { }; + + // A POD aggregate struct derived from an empty struct. + // Similar to struct Foo1 from Microsoft Visual C++ bug report 484295, + // "VC++ does not value-initialize members of derived classes without + // user-declared constructor", reported in 2009 by Sylvester Hesp: + // https://connect.microsoft.com/VisualStudio/feedback/details/484295 struct derived_struct: empty_struct { int data; @@ -166,18 +172,30 @@ namespace boost_no_complete_value_initialization } + class private_int_holder + { + private: + int m_data; + + friend bool is_value_initialized(const private_int_holder& arg) + { + return arg.m_data == 0; + } + }; + + // Equivalent to the Stats class from GCC Bug 33916, // "Default constructor fails to initialize array members", reported in 2007 by // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 - class int_array_pair + class private_int_array_pair { - friend bool is_value_initialized(const int_array_pair& arg); + friend bool is_value_initialized(const private_int_array_pair& arg); private: int first[12]; int second[12]; }; - bool is_value_initialized(const int_array_pair& arg) + bool is_value_initialized(const private_int_array_pair& arg) { for ( unsigned i = 0; i < 12; ++i) { @@ -327,7 +345,7 @@ namespace boost_no_complete_value_initialization } - typedef char _2d_char_array_type[2][3]; + typedef char _2d_char_array_type[3][4]; bool is_value_initialized(const _2d_char_array_type& arg) { @@ -341,7 +359,7 @@ namespace boost_no_complete_value_initialization return true; } - typedef char _3d_char_array_type[2][3][4]; + typedef char _3d_char_array_type[5][6][7]; bool is_value_initialized(const _3d_char_array_type& arg) { @@ -358,16 +376,53 @@ namespace boost_no_complete_value_initialization // For built-in types and enumerated types. - template + template bool is_value_initialized(const T& arg) { return arg == 0; } + // Wraps a heap object that it has allocated by doing new T(). + template + class heap_object_wrapper + { + private: + T* const m_ptr; + + // The following functions are intentionally left unimplemented + // (as if deleted, "= delete", in C++0x): + heap_object_wrapper(const heap_object_wrapper&); + void operator=(heap_object_wrapper); + + public: + heap_object_wrapper() + : + m_ptr(new T()) + { + } + + ~heap_object_wrapper() + { + delete m_ptr; + } + + bool is_wrapped_object_value_initialized() const + { + return (m_ptr != 0) && is_value_initialized(*m_ptr); + } + }; + + template + bool is_value_initialized(const heap_object_wrapper& arg) + { + return arg.is_wrapped_object_value_initialized(); + } + + // Returns zero when the specified object is value-initializated, and one otherwise. // Prints a message to standard output if the value-initialization has failed. - template + template unsigned failed_to_value_initialized(const T& object, const char *const object_name) { if ( is_value_initialized(object) ) @@ -419,8 +474,8 @@ namespace boost_no_complete_value_initialization double m_double_array[2]; long double m_long_double; long double m_long_double_array[2]; - void* m_ptr; - void* m_ptr_array[2]; + void* m_void_ptr; + void* m_void_ptr_array[2]; function_ptr_type m_function_ptr; function_ptr_type m_function_ptr_array[2]; function_ptr_struct m_function_ptr_struct; @@ -443,10 +498,12 @@ namespace boost_no_complete_value_initialization derived_struct m_derived_struct_array[2]; derived_int_struct m_derived_int_struct; derived_int_struct m_derived_int_struct_array[2]; + private_int_holder m_private_int_holder; + private_int_holder m_private_int_holder_array[2]; char_array_struct m_char_array_struct; char_array_struct m_char_array_struct_array[2]; - int_array_pair m_int_array_pair; - int_array_pair m_int_array_pair_array[2]; + private_int_array_pair m_private_int_array_pair; + private_int_array_pair m_private_int_array_pair_array[2]; enum_holder_and_int m_enum_holder_and_int; enum_holder_and_int m_enum_holder_and_int_array[2]; private_and_protected_int m_private_and_protected_int; @@ -501,8 +558,8 @@ namespace boost_no_complete_value_initialization m_double_array(), m_long_double(), m_long_double_array(), - m_ptr(), - m_ptr_array(), + m_void_ptr(), + m_void_ptr_array(), m_function_ptr(), m_function_ptr_array(), m_function_ptr_struct(), @@ -525,10 +582,12 @@ namespace boost_no_complete_value_initialization m_derived_struct_array(), m_derived_int_struct(), m_derived_int_struct_array(), + m_private_int_holder(), + m_private_int_holder_array(), m_char_array_struct(), m_char_array_struct_array(), - m_int_array_pair(), - m_int_array_pair_array(), + m_private_int_array_pair(), + m_private_int_array_pair_array(), m_enum_holder_and_int(), m_enum_holder_and_int_array(), m_private_and_protected_int(), @@ -586,9 +645,9 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_long_double) + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_long_double_array[1]) + - FAILED_TO_VALUE_INITIALIZE(m_ptr) + - FAILED_TO_VALUE_INITIALIZE(m_ptr_array[0]) + - FAILED_TO_VALUE_INITIALIZE(m_ptr_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_function_ptr) + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[1]) + @@ -622,12 +681,15 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct) + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct) + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[1]) + - FAILED_TO_VALUE_INITIALIZE(m_int_array_pair) + - FAILED_TO_VALUE_INITIALIZE(m_int_array_pair_array[0]) + - FAILED_TO_VALUE_INITIALIZE(m_int_array_pair_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int) + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[1]) + @@ -659,6 +721,8 @@ namespace boost_no_complete_value_initialization { typedef long double long_double_type; typedef unsigned char unsigned_char_type; + typedef void* void_ptr_type; + const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE(enum_holder()) + FAILED_TO_VALUE_INITIALIZE(enum_type()) + @@ -671,6 +735,7 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(float()) + FAILED_TO_VALUE_INITIALIZE(double()) + FAILED_TO_VALUE_INITIALIZE(long_double_type()) + + FAILED_TO_VALUE_INITIALIZE(void_ptr_type()) + FAILED_TO_VALUE_INITIALIZE(bit_field_struct()) + FAILED_TO_VALUE_INITIALIZE(function_ptr_type()) + FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + @@ -682,8 +747,9 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(derived_pod_struct()) + FAILED_TO_VALUE_INITIALIZE(derived_struct()) + FAILED_TO_VALUE_INITIALIZE(derived_int_struct()) + + FAILED_TO_VALUE_INITIALIZE(private_int_holder()) + FAILED_TO_VALUE_INITIALIZE(char_array_struct()) + - FAILED_TO_VALUE_INITIALIZE(int_array_pair()) + + FAILED_TO_VALUE_INITIALIZE(private_int_array_pair()) + // IBM's XL V10.1.0.0 may fail to value-initialize a temporary of a non-POD // type like enum_holder_and_int, virtual_destructor_holder, or non_pod_class, // as appeared at the Boost Config/trunk regression page in April 2010. @@ -704,6 +770,46 @@ namespace boost_no_complete_value_initialization return num_failures; } + // Checks value-initialization of small heap objects. + // Returns the number of failures. + unsigned check_value_initialization_of_heap_objects() + { + const unsigned num_failures = + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ); + return num_failures; + } // Equivalent to the dirty_stack() function from GCC Bug 33916, // "Default constructor fails to initialize array members", reported in 2007 by @@ -718,12 +824,12 @@ namespace boost_no_complete_value_initialization } + // Checks value-initialization of a large number of data members of a + // temporary object, an object on the stack, an object on the heap; + // furthermore it checks value-initialization of a number of smaller + // temporary objects and heap objects. int test() { - // Check value-initialization of the data members of a temporary object, - // an object on the stack, an object on the heap, and a number of small - // temporary objects. - unsigned total_num_failures = 0; dirty_stack(); @@ -766,15 +872,25 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << std::endl; } + const unsigned num_failures_of_heap_objects = check_value_initialization_of_heap_objects(); + + total_num_failures += num_failures_of_heap_objects; + if ( total_num_failures > 0 ) + { + std::cout << "- Number of failures of heap objects: " + << num_failures_of_heap_objects << std::endl; + } + if ( total_num_failures > 0 ) { std::cout << "-- Total number of initialization failures (" << num_failures_of_a_temporary << '+' << num_failures_on_stack << '+' << num_failures_on_heap << '+' - << num_failures_of_temporaries << "): " + << num_failures_of_temporaries << '+' + << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 18." + << "\nDetected by boost_no_complete_value_initialization::test() revision 19." << std::endl; } return static_cast(total_num_failures); From f16220569162b667d4f257d11ce3c1fd30456e5a Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 25 Apr 2010 09:48:49 +0000 Subject: [PATCH 143/435] Postponed BOOST_NO_COMPLETE_VALUE_INITIALIZATION definition, in order to check value-initialization of heap objects, which I just added to boost_no_complete_value_initialization::test() [61552] [SVN r61554] --- include/boost/config/compiler/vacpp.hpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 36c8288f..01956d3a 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -30,14 +30,6 @@ # define BOOST_NO_INITIALIZER_LISTS #endif -#if (__IBMCPP__ <= 1010) -// XL C++ V10.1.0.0 may not always value-initialize a temporary object T(), -// when T is a non-POD aggregate class type. Michael Wong (IBM Canada Ltd) -// has confirmed this issue and gave it high priority. -// -- Niels Dekker (LKEB), 2010. -# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -#endif - // // On AIX thread support seems to be indicated by _THREAD_SAFE: // From ae573fa3cc10ddbd971485a2fe915a3245233253 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 26 Apr 2010 10:24:28 +0000 Subject: [PATCH 144/435] Hopefully fixed config_test/darwin-4.0.1 error, "heap_object_wrapper(const &) is private". Added bool to pod_struct. [SVN r61572] --- test/boost_no_com_value_init.ipp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 2bb59464..654a3ba9 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -24,6 +24,7 @@ namespace boost_no_complete_value_initialization // A POD struct. struct pod_struct { + bool b; enum_type e; char c; unsigned char uc; @@ -40,6 +41,7 @@ namespace boost_no_complete_value_initialization bool is_value_initialized(const pod_struct& arg) { return + arg.b == 0 && arg.e == 0 && arg.c == 0 && arg.uc == 0 && @@ -393,7 +395,7 @@ namespace boost_no_complete_value_initialization // The following functions are intentionally left unimplemented // (as if deleted, "= delete", in C++0x): heap_object_wrapper(const heap_object_wrapper&); - void operator=(heap_object_wrapper); + void operator=(const heap_object_wrapper&); public: heap_object_wrapper() @@ -890,7 +892,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 19." + << "\nDetected by boost_no_complete_value_initialization::test() revision 20." << std::endl; } return static_cast(total_num_failures); From 1f380a1a882b3556c585966c2193c917c2415001 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 27 Apr 2010 09:20:42 +0000 Subject: [PATCH 145/435] Hopefully fixed config_test/darwin-4.0.1 error, "heap_object_wrapper(const &) is private" (second try). Also hopefully fixed warnings from IBM XL V10.1, saying "The temporary is not constructed, but the copy constructor must be accessible". Added more bool tests. [SVN r61608] --- test/boost_no_com_value_init.ipp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 654a3ba9..3ac33bf1 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -24,8 +24,8 @@ namespace boost_no_complete_value_initialization // A POD struct. struct pod_struct { - bool b; enum_type e; + bool b; char c; unsigned char uc; short s; @@ -392,10 +392,9 @@ namespace boost_no_complete_value_initialization private: T* const m_ptr; - // The following functions are intentionally left unimplemented + // The following function is intentionally left unimplemented // (as if deleted, "= delete", in C++0x): - heap_object_wrapper(const heap_object_wrapper&); - void operator=(const heap_object_wrapper&); + void operator=(heap_object_wrapper); public: heap_object_wrapper() @@ -409,6 +408,9 @@ namespace boost_no_complete_value_initialization delete m_ptr; } + // The copy-constructor is intentionally left unimplemented. + heap_object_wrapper(const heap_object_wrapper&); + bool is_wrapped_object_value_initialized() const { return (m_ptr != 0) && is_value_initialized(*m_ptr); @@ -456,6 +458,8 @@ namespace boost_no_complete_value_initialization enum_holder m_enum_holder_array[2]; enum_type m_enum; enum_type m_enum_array[2]; + bool m_bool; + bool m_bool_array[2]; char m_char; char m_char_array[2]; _2d_char_array_type m_2d_char_array; @@ -540,6 +544,8 @@ namespace boost_no_complete_value_initialization m_enum_holder_array(), m_enum(), m_enum_array(), + m_bool(), + m_bool_array(), m_char(), m_char_array(), m_2d_char_array(), @@ -618,6 +624,9 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_enum) + FAILED_TO_VALUE_INITIALIZE(m_enum_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_enum_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_bool) + + FAILED_TO_VALUE_INITIALIZE(m_bool_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_bool_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_char) + FAILED_TO_VALUE_INITIALIZE(m_char_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_char_array[1]) + @@ -728,6 +737,7 @@ namespace boost_no_complete_value_initialization const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE(enum_holder()) + FAILED_TO_VALUE_INITIALIZE(enum_type()) + + FAILED_TO_VALUE_INITIALIZE(bool()) + FAILED_TO_VALUE_INITIALIZE(char()) + FAILED_TO_VALUE_INITIALIZE(unsigned_char_type()) + FAILED_TO_VALUE_INITIALIZE(short()) + @@ -779,6 +789,7 @@ namespace boost_no_complete_value_initialization const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + @@ -892,7 +903,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 20." + << "\nDetected by boost_no_complete_value_initialization::test() revision 21." << std::endl; } return static_cast(total_num_failures); From 51a1ad1c2b5771456e6cd3593ddf584dda6fa7b6 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 27 Apr 2010 19:06:22 +0000 Subject: [PATCH 146/435] Correct the name of the BOOST_NO_EXPLICIT_CONVERSION_OPERATORS macro in the documentation [SVN r61624] --- doc/macro_reference.qbk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 00d07b4a..ac46a412 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -581,7 +581,7 @@ defaulted (`= default`) functions. [[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support deleted (`= delete`) functions. ]] -[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS`][The compiler does not support +[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support explicit conversion operators (`explicit operator T()`). ]] [[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support From b54ad840b130a466b5680ccae9816f66eb1588f8 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 27 Apr 2010 19:09:04 +0000 Subject: [PATCH 147/435] Added more documentation to boost_no_complete_value_initialization test. [SVN r61625] --- test/boost_no_com_value_init.ipp | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 3ac33bf1..08e58823 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -8,10 +8,25 @@ // MACRO: BOOST_NO_COMPLETE_VALUE_INITIALIZATION // TITLE: No complete value-initialization // DESCRIPTION: The C++ compiler does not to have implemented value-initialization completely. -// See also boost/libs/utility/value_init.htm#compiler_issues +// See also boost/libs/utility/value_init.htm#compiler_issues #include +// This test checks various forms of value-initialization: +// - doing member initialization inside a constructor +// - creating a temporary object by T() +// - creating a heap object by doing new T() +// It checks various DefaultConstructible types, including fundamental types, +// enum, union, pointer types, array types, POD and non-POD class types. For +// each type of object, a helper function is_value_initialized(const T&) tells +// whether the object is value-initialized. +// +// Note: It appeared insufficient to just check a single POD and a single +// non-POD class type, because some compilers correctly value-initialize some +// POD and some non-POD objects, while failing to value-initialize others. +// +// The test returns the number of encountered value-initialization failures. + namespace boost_no_complete_value_initialization { enum enum_type { negative_number = -1, magic_number = 42 }; @@ -54,7 +69,7 @@ namespace boost_no_complete_value_initialization arg.p == 0; } - + // A POD struct derived from another POD struct. struct derived_pod_struct: pod_struct { int derived_data; @@ -88,6 +103,7 @@ namespace boost_no_complete_value_initialization } + // A struct, having a bit-field. struct bit_field_struct { bool b : 1; @@ -100,6 +116,7 @@ namespace boost_no_complete_value_initialization return arg.b == false && arg.c == '\0'&& arg.u == 0U; } + // A struct, having a function pointer. struct function_ptr_struct { function_ptr_type data; @@ -110,6 +127,7 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + // A struct, having a member function pointer. struct member_function_ptr_struct { member_function_ptr_type data; @@ -120,8 +138,8 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } - // Equivalent to the struct TData from CodeGear bug report 51854, - // "Value-initialization: POD struct should be zero-initialized", + // A struct, having an int. Equivalent to the struct TData, from CodeGear bug + // report 51854, "Value-initialization: POD struct should be zero-initialized", // reported by me (Niels Dekker, LKEB) in 2007: // http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 struct int_struct @@ -135,6 +153,7 @@ namespace boost_no_complete_value_initialization } + // A struct, having an int_struct. struct int_struct_holder { int_struct data; @@ -146,6 +165,7 @@ namespace boost_no_complete_value_initialization } + // A struct derived from int_struct. struct derived_int_struct: int_struct { }; @@ -440,6 +460,8 @@ namespace boost_no_complete_value_initialization } } +// A macro that passed both the name and the value of the specified object to +// the function above here. #define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value) From 69917116b844dda81008fd0e57e2154ae8c696eb Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 27 Apr 2010 19:45:08 +0000 Subject: [PATCH 148/435] Compiler configuration logic for Clang. [SVN r61626] --- include/boost/config/compiler/clang.hpp | 65 +++++++++++++++++++ .../boost/config/select_compiler_config.hpp | 5 ++ 2 files changed, 70 insertions(+) create mode 100644 include/boost/config/compiler/clang.hpp diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp new file mode 100644 index 00000000..67047b3d --- /dev/null +++ b/include/boost/config/compiler/clang.hpp @@ -0,0 +1,65 @@ +// (C) Copyright Douglas Gregor 2010 +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// Clang compiler setup. + +#if __has_feature(cxx_exceptions) +#else +# define BOOST_NO_EXCEPTIONS +#endif + +#if __has_feature(cxx_rtti) +#else +# define BOOST_NO_RTTI +#endif + +#if defined(__int32) +// HACK: Clang only defines the type __int32 in Microsoft-compatibility mode, +// which means that declspecs are also available +# define BOOST_HAS_DECLSPEC +#endif + +#if defined(__int64) +# define BOOST_HAS_MS_INT64 +#endif + +// NOTE: Clang does not yet support NRVO. + +// NOTE: Clang's C++0x support is not worth detecting. However, it +// supports both extern templates and "long long" even in C++98/03 +// mode. +#define BOOST_NO_AUTO_DECLARATIONS +#define BOOST_NO_AUTO_MULTIDECLARATIONS +#define BOOST_NO_CHAR16_T +#define BOOST_NO_CHAR32_T +#define BOOST_NO_CONCEPTS +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_DECLTYPE +#define BOOST_NO_DEFAULTED_FUNCTIONS +#define BOOST_NO_DELETED_FUNCTIONS +#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#define BOOST_NO_INITIALIZER_LISTS +#define BOOST_NO_LAMBDAS +#define BOOST_NO_NULLPTR +#define BOOST_NO_RAW_LITERALS +#define BOOST_NO_RVALUE_REFERENCES +#define BOOST_NO_SCOPED_ENUMS +#define BOOST_NO_STATIC_ASSERT +#define BOOST_NO_TEMPLATE_ALIASES +#define BOOST_NO_UNICODE_LITERALS +#define BOOST_NO_VARIADIC_TEMPLATES + +// HACK: Clang does support extern templates, but Boost's test for +// them is wrong. +#define BOOST_NO_EXTERN_TEMPLATE + +#ifndef BOOST_COMPILER +// NOTE: Clang does not expose a version number +# define BOOST_COMPILER "Clang C++" +#endif diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 792963e2..f9b086ad 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -15,6 +15,7 @@ // compilers we support: # define BOOST_CXX_GCCXML 0 +# define BOOST_CXX_CLANG 0 # define BOOST_CXX_COMO 0 # define BOOST_CXX_DMC 0 # define BOOST_CXX_INTEL 0 @@ -49,6 +50,10 @@ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" +#elif defined __clang__ +// Clang C++ emulates GCC, so it has to appear early. +# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp" + #elif defined __DMC__ // Digital Mars C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp" From 25678a5700a2101ae4d642a325c4d0d984131acb Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 28 Apr 2010 08:50:23 +0000 Subject: [PATCH 149/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to GCC < 4.4 (trunk), see #4080. [SVN r61642] --- include/boost/config/compiler/gcc.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index fe2c52ea..a4c23c36 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -69,6 +69,18 @@ # endif #endif +#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 ) +// Previous versions of GCC did not completely implement value-initialization: +// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize +// members", reported by Jonathan Wakely in 2006, +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4) +// GCC Bug 33916, "Default constructor fails to initialize array members", +// reported by Michael Elizabeth Chastain in 2007, +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4) +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif + #ifndef __EXCEPTIONS # define BOOST_NO_EXCEPTIONS #endif From c1ae43050e3612d352be1d7e83ed891c22506b34 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 28 Apr 2010 17:54:03 +0000 Subject: [PATCH 150/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to Borland (trunk), see #4080 [SVN r61652] --- include/boost/config/compiler/borland.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 6a7b988d..912bdf8b 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -261,6 +261,13 @@ # define BOOST_NO_VOID_RETURNS #endif +// Borland did not implement value-initialization completely, as I reported +// in 2007, Borland Report 51854, "Value-initialization: POD struct should be +// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?rc=51854 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +// (Niels Dekker, LKEB, April 2010) +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) From 21c71acd6ce9d969e2228a7b7ff64cd874354cb1 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Thu, 29 Apr 2010 22:32:44 +0000 Subject: [PATCH 151/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to CodeGear (trunk), see #4080. [SVN r61691] --- include/boost/config/compiler/codegear.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 698624ec..f8bda07f 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -51,6 +51,15 @@ // Temporary hack, until specific MPL preprocessed headers are generated # define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS +// CodeGear has not yet completely implemented value-initialization, for +// example for array types, as I reported in 2010: Embarcadero Report 83751, +// "Value-initialization: arrays should have each element value-initialized", +// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751 +// Last checked version: Embarcadero C++ 6.21 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +// (Niels Dekker, LKEB, April 2010) +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + # ifdef NDEBUG // fix broken so that Boost.test works: # include From 02792885e1b3713a9b54ac6554c57d141ad76f41 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Fri, 30 Apr 2010 03:00:31 +0000 Subject: [PATCH 152/435] Clang has a version macro now. Use it. [SVN r61693] --- include/boost/config/compiler/clang.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 67047b3d..e3551bc4 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -60,6 +60,5 @@ #define BOOST_NO_EXTERN_TEMPLATE #ifndef BOOST_COMPILER -// NOTE: Clang does not expose a version number -# define BOOST_COMPILER "Clang C++" +# define BOOST_COMPILER "Clang version " __clang_version__ #endif From a947601d795d8252fb06b1912cea53723a84d476 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 1 May 2010 08:55:01 +0000 Subject: [PATCH 153/435] Fixed URL to value-initialization bug report. [SVN r61721] --- include/boost/config/compiler/borland.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 912bdf8b..6e9db623 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -263,7 +263,7 @@ // Borland did not implement value-initialization completely, as I reported // in 2007, Borland Report 51854, "Value-initialization: POD struct should be -// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?rc=51854 +// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854 // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues // (Niels Dekker, LKEB, April 2010) #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION From 234c8635532cfd3c7faa794b8be1be267ac6fa35 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 1 May 2010 11:06:57 +0000 Subject: [PATCH 154/435] Increased last known CodeGear version as discussed with John Maddock. [SVN r61722] --- include/boost/config/compiler/codegear.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index f8bda07f..c816cf8f 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -19,8 +19,8 @@ #endif // // versions check: -// last known and checked version is 0x620 -#if (__CODEGEARC__ > 0x620) +// last known and checked version is 0x621 +#if (__CODEGEARC__ > 0x621) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else @@ -41,7 +41,7 @@ #endif // CodeGear C++ Builder 2010 -#if (__CODEGEARC__ <= 0x620) +#if (__CODEGEARC__ <= 0x621) # define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS From fb86556f483ca240d809c339bf2ae70c2cb6fc3e Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 1 May 2010 22:28:24 +0000 Subject: [PATCH 155/435] Redid adding BOOST_NO_COMPLETE_VALUE_INITIALIZATION to IBM XL C++ <= V10.1.0 (trunk), as [61516]. The addition of heap objects to boost_no_complete_value_initialization::test() [61552] did not cause any extra failures. See #4080. [SVN r61725] --- include/boost/config/compiler/vacpp.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 01956d3a..36c8288f 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -30,6 +30,14 @@ # define BOOST_NO_INITIALIZER_LISTS #endif +#if (__IBMCPP__ <= 1010) +// XL C++ V10.1.0.0 may not always value-initialize a temporary object T(), +// when T is a non-POD aggregate class type. Michael Wong (IBM Canada Ltd) +// has confirmed this issue and gave it high priority. +// -- Niels Dekker (LKEB), 2010. +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif + // // On AIX thread support seems to be indicated by _THREAD_SAFE: // From 5e1d3de510e83f3ded4618d6716a9ef79bb9ddab Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 3 May 2010 17:43:56 +0000 Subject: [PATCH 156/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to Sun <= 5.10 (trunk), see #4080 [SVN r61744] --- include/boost/config/compiler/sunpro_cc.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index f5184887..a636aa1e 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -69,6 +69,16 @@ # define BOOST_NO_IS_ABSTRACT # endif +# if (__SUNPRO_CC <= 0x5100) + // Sun 5.10 may not correctly value-initialize objects of + // some user defined types, as was reported in April 2010 + // (CR 6947016), and confirmed by Steve Clamage. + // (Niels Dekker, LKEB, May 2010). +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# endif + + + // // Issues that effect all known versions: // From ff22ac28c72241d2dcc2aee53243ee53a75010b6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 5 May 2010 17:43:05 +0000 Subject: [PATCH 157/435] Fix inspection script issues. [SVN r61790] --- test/boost_no_auto_declarations.ipp | 4 ++-- test/boost_no_auto_multidecl.ipp | 4 ++-- test/boost_no_com_value_init.ipp | 8 ++++---- test/boost_no_rtti.ipp | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp index be48ed3e..65410827 100644 --- a/test/boost_no_auto_declarations.ipp +++ b/test/boost_no_auto_declarations.ipp @@ -11,14 +11,14 @@ namespace boost_no_auto_declarations { -void check(int& x) +void check_f(int& x) { } int test() { auto x = 10; - check(x); + check_f(x); return 0; } diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp index 976d445a..ea976612 100644 --- a/test/boost_no_auto_multidecl.ipp +++ b/test/boost_no_auto_multidecl.ipp @@ -11,14 +11,14 @@ namespace boost_no_auto_multideclarations { -void check(int& x, int*& y) +void check_f(int& x, int*& y) { } int test() { auto x = 10, *y = &x; - check(x, y); + check_f(x, y); return 0; } diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 08e58823..a3a6c3ea 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -636,7 +636,7 @@ namespace boost_no_complete_value_initialization } // Returns the number of failures. - unsigned check() const + unsigned check_failures() const { const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE(int_struct::data) + @@ -868,7 +868,7 @@ namespace boost_no_complete_value_initialization unsigned total_num_failures = 0; dirty_stack(); - const unsigned num_failures_of_a_temporary = value_initializer().check(); + const unsigned num_failures_of_a_temporary = value_initializer().check_failures(); total_num_failures += num_failures_of_a_temporary; if ( total_num_failures > 0 ) @@ -878,7 +878,7 @@ namespace boost_no_complete_value_initialization } dirty_stack(); value_initializer object_on_stack; - const unsigned num_failures_on_stack = object_on_stack.check(); + const unsigned num_failures_on_stack = object_on_stack.check_failures(); total_num_failures += num_failures_on_stack; if ( total_num_failures > 0 ) @@ -887,7 +887,7 @@ namespace boost_no_complete_value_initialization << num_failures_on_stack << std::endl; } const value_initializer* const ptr = new value_initializer(); - const unsigned num_failures_on_heap = ptr->check(); + const unsigned num_failures_on_heap = ptr->check_failures(); delete ptr; total_num_failures += num_failures_on_heap; diff --git a/test/boost_no_rtti.ipp b/test/boost_no_rtti.ipp index 69594722..dd8992bc 100644 --- a/test/boost_no_rtti.ipp +++ b/test/boost_no_rtti.ipp @@ -36,7 +36,7 @@ void B::t() namespace boost_no_rtti { -int check(const A& a) +int check_f(const A& a) { return typeid(a) == typeid(B) ? 0 : 1; } @@ -45,7 +45,7 @@ int test() { try{ B b; - return check(b); + return check_f(b); } catch(...) { From 84e49b5e52a53098e155ae975bd6853516b9e5c2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 5 May 2010 17:55:15 +0000 Subject: [PATCH 158/435] Only define BOOST_NO_EXCEPTIONS if not already defined - fixes #4059. [SVN r61791] --- include/boost/config/compiler/borland.hpp | 2 +- include/boost/config/compiler/clang.hpp | 2 +- include/boost/config/compiler/codegear.hpp | 2 +- include/boost/config/compiler/common_edg.hpp | 2 +- include/boost/config/compiler/digitalmars.hpp | 2 +- include/boost/config/compiler/gcc.hpp | 2 +- include/boost/config/compiler/kai.hpp | 2 +- include/boost/config/compiler/metrowerks.hpp | 2 +- include/boost/config/compiler/visualc.hpp | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 6e9db623..fecc29aa 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -218,7 +218,7 @@ // // check for exception handling support: // -#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) +#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif // diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index e3551bc4..cdbba676 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -8,7 +8,7 @@ // Clang compiler setup. -#if __has_feature(cxx_exceptions) +#if __has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS) #else # define BOOST_NO_EXCEPTIONS #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index c816cf8f..76726f67 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -131,7 +131,7 @@ // // check for exception handling support: // -#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) +#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif // diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 9dc4cef8..c2559695 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -44,7 +44,7 @@ #endif // See also kai.hpp which checks a Kai-specific symbol for EH -# if !defined(__KCC) && !defined(__EXCEPTIONS) +# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS # endif diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index a01b4c28..bd37d2f1 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -51,7 +51,7 @@ // check for exception handling support: -#ifndef _CPPUNWIND +#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index a4c23c36..463bf5dd 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -81,7 +81,7 @@ #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #endif -#ifndef __EXCEPTIONS +#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif diff --git a/include/boost/config/compiler/kai.hpp b/include/boost/config/compiler/kai.hpp index ea06f9f4..2337e6a8 100644 --- a/include/boost/config/compiler/kai.hpp +++ b/include/boost/config/compiler/kai.hpp @@ -17,7 +17,7 @@ # endif // see also common_edg.hpp which needs a special check for __KCC -# if !defined(_EXCEPTIONS) +# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS # endif diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index aeba7f80..3bc9d975 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -48,7 +48,7 @@ # define BOOST_NO_INTRINSIC_WCHAR_T #endif -#if !__option(exceptions) +#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 2238f476..157abc8b 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -115,7 +115,7 @@ // // check for exception handling support: -#ifndef _CPPUNWIND +#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS) # define BOOST_NO_EXCEPTIONS #endif From 94713abf7993cc131e508648424aa11d203abffb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 5 May 2010 18:01:42 +0000 Subject: [PATCH 159/435] Fixes #4178. [SVN r61792] --- test/boost_no_raw_literals.ipp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/boost_no_raw_literals.ipp b/test/boost_no_raw_literals.ipp index 54d22042..83aa3bc7 100644 --- a/test/boost_no_raw_literals.ipp +++ b/test/boost_no_raw_literals.ipp @@ -14,8 +14,8 @@ namespace boost_no_raw_literals { int test() { - const char* s = R"[abc]"; - const wchar_t* ws = LR"[abc]"; + const char* s = R"(abc)"; + const wchar_t* ws = LR"(abc)"; return 0; } From b36825755a62eef2c5437098b9fb0409c3ebadac Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 5 May 2010 20:46:41 +0000 Subject: [PATCH 160/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to Microsoft Visual C++ (trunk), see #4080. [SVN r61799] --- include/boost/config/compiler/visualc.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 157abc8b..93bbb674 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -99,6 +99,18 @@ # define BOOST_NO_ADL_BARRIER #endif +// MSVC has not yet completely implemented value-initialization, as +// is reported: +// "VC++ does not value-initialize members of derived classes without +// user-declared constructor", reported in 2009 by Sylvester Hesp: +// https://connect.microsoft.com/VisualStudio/feedback/details/484295 +// "Value-initialization in new-expression", reported in 2005 by +// Pavel Kuznetsov (MetaCommunications Engineering): +// https://connect.microsoft.com/VisualStudio/feedback/details/100744 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +// (Niels Dekker, LKEB, May 2010) +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + #if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0 # define BOOST_NO_INITIALIZER_LISTS #endif From f433ffab109d33a0b20af751edd6011f523d9ac2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 May 2010 09:35:55 +0000 Subject: [PATCH 161/435] Fixes #4152. [SVN r61804] --- include/boost/config/compiler/sunpro_cc.hpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index a636aa1e..8f8d7886 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -88,12 +88,7 @@ // // C++0x features // - -#if(__SUNPRO_CC >= 0x590) # define BOOST_HAS_LONG_LONG -#else -# define BOOST_NO_LONG_LONG -#endif #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS From 7c0cb1b744f8abbedaee7558babb58d24c701196 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 6 May 2010 09:54:13 +0000 Subject: [PATCH 162/435] Add long standing debug-mode python support. Add support for --layout=tagged. Fixes #4041. [SVN r61805] --- include/boost/config/auto_link.hpp | 89 +++++++++++++++++++++++------- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index f2eb583f..0d17eb8f 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -25,6 +25,9 @@ BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name of the library selected (useful for debugging). BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib, rather than a mangled-name version. +BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option. + This is essentially the same as the default name-mangled version, but without + the compiler name and version, or the Boost version. Just the build options. These macros will be undef'ed at the end of the header, further this header has no include guards - so be sure to include it only once from your library! @@ -60,6 +63,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used, a hiphen: s static runtime (dynamic if not present). + g debug/diagnostic runtime (release if not present). + y Python debug/diagnostic runtime (release if not present). d debug build (release if not present). g debug/diagnostic runtime (release if not present). p STLPort Build. @@ -183,8 +188,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS)) -# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydp" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) # define BOOST_LIB_RT_OPT "-gdp" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" # elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-gdp" # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") @@ -195,8 +208,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydpn" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) # define BOOST_LIB_RT_OPT "-gdpn" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gydpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" # elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-gdpn" # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") @@ -207,7 +228,9 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # else -# if defined(_DEBUG) +# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-gyd" +# elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-gd" # else # define BOOST_LIB_RT_OPT @@ -219,8 +242,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS)) -# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydp" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) # define BOOST_LIB_RT_OPT "-sgdp" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydp" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" # elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-sgdp" # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") @@ -231,8 +262,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) -# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) +# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydpn" +# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG)) # define BOOST_LIB_RT_OPT "-sgdpn" +# elif defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgydpn" +# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") +# error "Build options aren't compatible with pre-built libraries" # elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-sgdpn" # pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1") @@ -243,7 +282,10 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # else -# if defined(_DEBUG) +# if defined(_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sgyd" +# elif defined(_DEBUG) # define BOOST_LIB_RT_OPT "-sgd" # else # define BOOST_LIB_RT_OPT "-s" @@ -270,16 +312,26 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # ifdef _RTLDLL -# ifdef BOOST_BORLAND_DEBUG +# if defined(BOOST_BORLAND_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-yd" +# elif defined(BOOST_BORLAND_DEBUG) # define BOOST_LIB_RT_OPT "-d" +# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT -y # else # define BOOST_LIB_RT_OPT # endif # else -# ifdef BOOST_BORLAND_DEBUG +# if defined(BOOST_BORLAND_DEBUG)\ + && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-syd" +# elif defined(BOOST_BORLAND_DEBUG) # define BOOST_LIB_RT_OPT "-sd" +# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON) +# define BOOST_LIB_RT_OPT "-sy" # else # define BOOST_LIB_RT_OPT "-s" # endif @@ -309,16 +361,21 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_RT_OPT) \ && defined(BOOST_LIB_VERSION) -#ifndef BOOST_AUTO_LINK_NOMANGLE -# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +#ifdef BOOST_AUTO_LINK_TAGGED +# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") # ifdef BOOST_LIB_DIAGNOSTIC # pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") # endif -#else +#elif defined(BOOST_AUTO_LINK_NOMANGLE) # pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") # ifdef BOOST_LIB_DIAGNOSTIC # pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib") # endif +#else +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# ifdef BOOST_LIB_DIAGNOSTIC +# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") +# endif #endif #else @@ -361,13 +418,3 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. # undef BOOST_AUTO_LINK_NOMANGLE #endif - - - - - - - - - - From 9b529bbc11a6328ad4fb186517d68e6397e64b24 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 7 May 2010 19:48:38 +0000 Subject: [PATCH 163/435] Renamed some identifiers in value-initialization test, the word "subobject" appears more appropriate than "member". [SVN r61847] --- test/boost_no_com_value_init.ipp | 44 +++++++++++++++++--------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index a3a6c3ea..9b680cd2 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -636,7 +636,7 @@ namespace boost_no_complete_value_initialization } // Returns the number of failures. - unsigned check_failures() const + unsigned check_value_initialization_of_subobjects() const { const unsigned num_failures = FAILED_TO_VALUE_INITIALIZE(int_struct::data) + @@ -859,42 +859,44 @@ namespace boost_no_complete_value_initialization } - // Checks value-initialization of a large number of data members of a - // temporary object, an object on the stack, an object on the heap; - // furthermore it checks value-initialization of a number of smaller - // temporary objects and heap objects. + // Checks value-initialization of the subobjects of a temporary object, + // an object on the stack, an object on the heap; furthermore it checks + // value-initialization of a number of smaller temporary objects and + // heap objects. int test() { unsigned total_num_failures = 0; dirty_stack(); - const unsigned num_failures_of_a_temporary = value_initializer().check_failures(); + const unsigned num_failures_of_subobjects_of_a_temporary = + value_initializer().check_value_initialization_of_subobjects(); - total_num_failures += num_failures_of_a_temporary; + total_num_failures += num_failures_of_subobjects_of_a_temporary; if ( total_num_failures > 0 ) { - std::cout << "- Number of member initialization failures of a temporary: " - << num_failures_of_a_temporary << std::endl; + std::cout << "- Number of subobject initialization failures of a temporary: " + << num_failures_of_subobjects_of_a_temporary << std::endl; } dirty_stack(); value_initializer object_on_stack; - const unsigned num_failures_on_stack = object_on_stack.check_failures(); + const unsigned num_failures_of_subobjects_on_stack = + object_on_stack.check_value_initialization_of_subobjects(); - total_num_failures += num_failures_on_stack; + total_num_failures += num_failures_of_subobjects_on_stack; if ( total_num_failures > 0 ) { - std::cout << "- Number of member initialization failures on the stack: " - << num_failures_on_stack << std::endl; + std::cout << "- Number of subobject initialization failures on the stack: " + << num_failures_of_subobjects_on_stack << std::endl; } const value_initializer* const ptr = new value_initializer(); - const unsigned num_failures_on_heap = ptr->check_failures(); + const unsigned num_failures_of_subobjects_on_heap = ptr->check_value_initialization_of_subobjects(); delete ptr; - total_num_failures += num_failures_on_heap; + total_num_failures += num_failures_of_subobjects_on_heap; if ( total_num_failures > 0 ) { - std::cout << "- Number of member initialization failures on the heap: " - << num_failures_on_heap << std::endl; + std::cout << "- Number of subobject initialization failures on the heap: " + << num_failures_of_subobjects_on_heap << std::endl; } dirty_stack(); @@ -919,13 +921,13 @@ namespace boost_no_complete_value_initialization if ( total_num_failures > 0 ) { std::cout << "-- Total number of initialization failures (" - << num_failures_of_a_temporary << '+' - << num_failures_on_stack << '+' - << num_failures_on_heap << '+' + << num_failures_of_subobjects_of_a_temporary << '+' + << num_failures_of_subobjects_on_stack << '+' + << num_failures_of_subobjects_on_heap << '+' << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 21." + << "\nDetected by boost_no_complete_value_initialization::test() revision 22." << std::endl; } return static_cast(total_num_failures); From 888fd57252d999b98906eff9ae4b4efac9d7bf1f Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 7 May 2010 20:05:46 +0000 Subject: [PATCH 164/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to IBM XL C++ <= V11.0.1 (trunk), see #4080. [SVN r61848] --- include/boost/config/compiler/vacpp.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 36c8288f..55b6a7cd 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -30,11 +30,11 @@ # define BOOST_NO_INITIALIZER_LISTS #endif -#if (__IBMCPP__ <= 1010) -// XL C++ V10.1.0.0 may not always value-initialize a temporary object T(), -// when T is a non-POD aggregate class type. Michael Wong (IBM Canada Ltd) -// has confirmed this issue and gave it high priority. -// -- Niels Dekker (LKEB), 2010. +#if (__IBMCPP__ <= 1101) +// XL C++ V11.0.1.0 and earlier versions may not always value-initialize +// a temporary object T(), when T is a non-POD aggregate class type. +// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it +// high priority. -- Niels Dekker (LKEB), May 2010. # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #endif From 80569d1e82a473f8de54f802f0aafc09f671ce15 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 8 May 2010 14:17:54 +0000 Subject: [PATCH 165/435] Added value-initialization tests for user_defined_copy_constructor_holder_and_int, a type similar to struct B at https://connect.microsoft.com/VisualStudio/feedback/details/499606 [SVN r61853] --- test/boost_no_com_value_init.ipp | 46 +++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 9b680cd2..2eabc42b 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -298,6 +298,41 @@ namespace boost_no_complete_value_initialization return arg.e.is_value_initialized() && arg.i == 0; } + class user_defined_copy_constructor_holder + { + public: + int data; + + user_defined_copy_constructor_holder() + : + data(0) + { + } + + user_defined_copy_constructor_holder(const user_defined_copy_constructor_holder& arg) + : + data(arg.data) + { + } + }; + + // An aggregate struct that has a data member which has a user-defined + // copy constructor and a data member of a scalar type. + // Similar to struct B from Microsoft Visual C++ bug report 499606, + // "Presence of copy constructor breaks member class initialization", + // reported in 2009 by Alex Vakulenko: + // https://connect.microsoft.com/VisualStudio/feedback/details/499606 + struct user_defined_copy_constructor_holder_and_int + { + user_defined_copy_constructor_holder first; + int second; + }; + + bool is_value_initialized(const user_defined_copy_constructor_holder_and_int& arg) + { + return arg.first.data == 0 && arg.second == 0; + } + // An class that has a private and a protected int data member. class private_and_protected_int @@ -536,6 +571,8 @@ namespace boost_no_complete_value_initialization enum_holder_and_int m_enum_holder_and_int_array[2]; private_and_protected_int m_private_and_protected_int; private_and_protected_int m_private_and_protected_int_array[2]; + user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int; + user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int_array[2]; user_defined_destructor_holder m_user_defined_destructor_holder; user_defined_destructor_holder m_user_defined_destructor_holder_array[2]; virtual_destructor_holder m_virtual_destructor_holder; @@ -622,6 +659,8 @@ namespace boost_no_complete_value_initialization m_enum_holder_and_int_array(), m_private_and_protected_int(), m_private_and_protected_int_array(), + m_user_defined_copy_constructor_holder_and_int(), + m_user_defined_copy_constructor_holder_and_int_array(), m_user_defined_destructor_holder(), m_user_defined_destructor_holder_array(), m_virtual_destructor_holder(), @@ -729,6 +768,9 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int) + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder) + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[1]) + @@ -791,6 +833,7 @@ namespace boost_no_complete_value_initialization // and gave it high priority. FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) + FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) + + FAILED_TO_VALUE_INITIALIZE(user_defined_copy_constructor_holder_and_int()) + // The following line, doing user_defined_destructor_holder(), causes // a compilation error on Embarcadero 2010 (Borland/CodeGear 6.21), // as reported by me (Niels Dekker, LKEB) in 2010, bug report 83851, @@ -838,6 +881,7 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + @@ -927,7 +971,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 22." + << "\nDetected by boost_no_complete_value_initialization::test() revision 23." << std::endl; } return static_cast(total_num_failures); From f41b288087f65205fbaf0ee012f98679577865b0 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 9 May 2010 08:11:36 +0000 Subject: [PATCH 166/435] Temporarily printed __IBMCPP__. Maybe I typed in the wrong version number at [61848], because there are still value initialization failures at http://www.boost.org/development/tests/trunk/developer/output/IBM_Canada_Ltd-boost-bin-v2-libs-config-test-config_test-test-vacpp-debug.html [SVN r61873] --- test/boost_no_com_value_init.ipp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 2eabc42b..ea1b71e0 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -971,9 +971,15 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 23." + << "\nDetected by boost_no_complete_value_initialization::test() revision 24." << std::endl; } + +// TODO The following lines should not be merged into the release branch!!! +#ifdef __IBMCPP__ + std::cout << "__IBMCPP__ = " << __IBMCPP__ << std::endl; +#endif + return static_cast(total_num_failures); } From 1995aad2deb2030388ac4ed336127ff05f58b690 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 9 May 2010 14:40:14 +0000 Subject: [PATCH 167/435] 1.44.0 prep [SVN r61878] --- 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 82a1daf5..8d996f87 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 104300 +#define BOOST_VERSION 104400 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_43" +#define BOOST_LIB_VERSION "1_44" #endif From e2f6dc912769da517bb3b0b6b62009b44995e313 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 12 May 2010 12:34:45 +0000 Subject: [PATCH 168/435] Tentative fix for BOOST_NO_EXTERN_TEMPLATE: previous test case was invalid. [SVN r61930] --- include/boost/config/compiler/common_edg.hpp | 2 +- include/boost/config/compiler/gcc.hpp | 3 ++- include/boost/config/compiler/visualc.hpp | 2 +- test/boost_no_extern_template.ipp | 21 +++++++++++++++++++- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index c2559695..bb442a22 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -62,6 +62,7 @@ #if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) // No support for initializer lists # define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_EXTERN_TEMPLATE #endif #define BOOST_NO_AUTO_DECLARATIONS @@ -74,7 +75,6 @@ #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 463bf5dd..b9b42bdb 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -42,6 +42,7 @@ # define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_EXTERN_TEMPLATE #elif __GNUC__ == 3 # if defined (__PATHSCALE__) # define BOOST_NO_TWO_PHASE_NAME_LOOKUP @@ -58,6 +59,7 @@ # if __GNUC_MINOR__ < 4 # define BOOST_NO_IS_ABSTRACT # endif +# define BOOST_NO_EXTERN_TEMPLATE #endif #if __GNUC__ < 4 // @@ -119,7 +121,6 @@ // C++0x features not implemented in any GCC version // #define BOOST_NO_CONSTEXPR -#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_NULLPTR #define BOOST_NO_TEMPLATE_ALIASES diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 93bbb674..b34db6f1 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -68,6 +68,7 @@ # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS +# define BOOST_NO_EXTERN_TEMPLATE // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)? # if (_MSC_VER > 1200) # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS @@ -186,7 +187,6 @@ #define BOOST_NO_DECLTYPE #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_RAW_LITERALS diff --git a/test/boost_no_extern_template.ipp b/test/boost_no_extern_template.ipp index 732eedc6..0965470b 100644 --- a/test/boost_no_extern_template.ipp +++ b/test/boost_no_extern_template.ipp @@ -12,7 +12,26 @@ namespace boost_no_extern_template { -extern template void f(T); +template void f(T const* p, U const* q) +{ + p = q; +} + +template +class must_not_compile +{ +public: + void f(T const* p, int const* q); +}; + +template +void must_not_compile::f(T const* p, int const* q) +{ + p = q; +} + +extern template void f<>(int const*, float const*); +extern template class must_not_compile; int test() { From dcd49febca6669b515b0de06b922cbd24ed8ed0f Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 12 May 2010 18:23:07 +0000 Subject: [PATCH 169/435] Removed printing of "__IBMCPP__". It printed 1110, so I'm pretty sure the IBM regression machine currently runs XL V11.1. [SVN r61932] --- test/boost_no_com_value_init.ipp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index ea1b71e0..e62069bb 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -971,15 +971,9 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 24." + << "\nDetected by boost_no_complete_value_initialization::test() revision 25." << std::endl; } - -// TODO The following lines should not be merged into the release branch!!! -#ifdef __IBMCPP__ - std::cout << "__IBMCPP__ = " << __IBMCPP__ << std::endl; -#endif - return static_cast(total_num_failures); } From 95b42f805d21ec05f72a082e327f840b7ab01564 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 12 May 2010 18:23:33 +0000 Subject: [PATCH 170/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to IBM XL C++ <= V11.1 (trunk), see #4080. [SVN r61933] --- include/boost/config/compiler/vacpp.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 55b6a7cd..e5b69711 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -30,8 +30,8 @@ # define BOOST_NO_INITIALIZER_LISTS #endif -#if (__IBMCPP__ <= 1101) -// XL C++ V11.0.1.0 and earlier versions may not always value-initialize +#if (__IBMCPP__ <= 1110) +// XL C++ V11.1 and earlier versions may not always value-initialize // a temporary object T(), when T is a non-POD aggregate class type. // Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it // high priority. -- Niels Dekker (LKEB), May 2010. From 1311f5d3bfb6613944df9c056dff0303442d3a84 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Thu, 13 May 2010 12:11:58 +0000 Subject: [PATCH 171/435] Added value-initialization checks for pointer-to-member. [SVN r61942] --- test/boost_no_com_value_init.ipp | 42 +++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index e62069bb..53a8e6e5 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -13,7 +13,7 @@ #include // This test checks various forms of value-initialization: -// - doing member initialization inside a constructor +// - doing subobject initialization inside a constructor // - creating a temporary object by T() // - creating a heap object by doing new T() // It checks various DefaultConstructible types, including fundamental types, @@ -138,6 +138,24 @@ namespace boost_no_complete_value_initialization return arg.data == 0; } + struct int_pair_struct + { + int first; + int second; + }; + + typedef int int_pair_struct::*ptr_to_member_type; + + struct ptr_to_member_struct + { + ptr_to_member_type data; + }; + + bool is_value_initialized(const ptr_to_member_struct& arg) + { + return arg.data == 0; + } + // A struct, having an int. Equivalent to the struct TData, from CodeGear bug // report 51854, "Value-initialization: POD struct should be zero-initialized", // reported by me (Niels Dekker, LKEB) in 2007: @@ -432,7 +450,7 @@ namespace boost_no_complete_value_initialization - // For built-in types and enumerated types. + // Tells whether an object of a scalar type T is value-initialized. template bool is_value_initialized(const T& arg) { @@ -547,6 +565,10 @@ namespace boost_no_complete_value_initialization member_function_ptr_type m_member_function_ptr_array[2]; member_function_ptr_struct m_member_function_ptr_struct; member_function_ptr_struct m_member_function_ptr_struct_array[2]; + ptr_to_member_type m_ptr_to_member; + ptr_to_member_type m_ptr_to_member_array[2]; + ptr_to_member_struct m_ptr_to_member_struct; + ptr_to_member_struct m_ptr_to_member_struct_array[2]; bit_field_struct m_bit_field_struct; bit_field_struct m_bit_field_struct_array[2]; int_struct m_int_struct; @@ -635,6 +657,10 @@ namespace boost_no_complete_value_initialization m_member_function_ptr_array(), m_member_function_ptr_struct(), m_member_function_ptr_struct_array(), + m_ptr_to_member(), + m_ptr_to_member_array(), + m_ptr_to_member_struct(), + m_ptr_to_member_struct_array(), m_bit_field_struct(), m_bit_field_struct_array(), m_int_struct(), @@ -732,6 +758,12 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) + + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) + @@ -817,6 +849,8 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) + + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_type()) + + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + @@ -869,6 +903,8 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + @@ -971,7 +1007,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 25." + << "\nDetected by boost_no_complete_value_initialization::test() revision 26." << std::endl; } return static_cast(total_num_failures); From 1061e15f3e4a2d096188d48cbfa36eb65ab2c84d Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 14 May 2010 21:51:14 +0000 Subject: [PATCH 172/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to clang (trunk), see #4080. [SVN r61971] --- include/boost/config/compiler/clang.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index cdbba676..c37ad622 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -59,6 +59,13 @@ // them is wrong. #define BOOST_NO_EXTERN_TEMPLATE +// Clang version 2.0 (trunk 103769) does not yet properly +// value-initialize objects of a pointer-to-member type, +// as was reported by Christopher Jefferson in May 2010, Bug 7139, +// "ptr to member not zeroed", http://llvm.org/bugs/show_bug.cgi?id=7139 +// (Niels Dekker, LKEB, May 2010) +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION + #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ #endif From b8b5426bc3b471fc15cdb34739a3c91fe4c4653f Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sat, 15 May 2010 18:47:13 +0000 Subject: [PATCH 173/435] Clang now supports the NRVO [SVN r62004] --- include/boost/config/compiler/clang.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index c37ad622..53339b4c 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -28,7 +28,7 @@ # define BOOST_HAS_MS_INT64 #endif -// NOTE: Clang does not yet support NRVO. +#define BOOST_HAS_NRVO // NOTE: Clang's C++0x support is not worth detecting. However, it // supports both extern templates and "long long" even in C++98/03 From 85b12318f5dad51de4c156ff33bbb3ccb6dbf736 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 17 May 2010 15:36:04 +0000 Subject: [PATCH 174/435] Temporarily skipped value-initialization of m_ptr_to_member_array for Intel <= 11.1, to avoid an internal error reported by John Maddock, Intel support issue 589832. [SVN r62067] --- test/boost_no_com_value_init.ipp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 53a8e6e5..e23618b6 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -517,6 +517,17 @@ namespace boost_no_complete_value_initialization // the function above here. #define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value) +// TODO Niels Dekker, May 17, 2010: The following code is meant to be very tentative (trunk only). +// It should be removed later this month, and is certainly not meant to become part of the release branch!!! +#ifdef __INTEL_COMPILER + #if __INTEL_COMPILER <= 1110 + // The following macro indicates that initialization of m_ptr_to_member_array must be skipped. + // Such an initialization triggered an internal error (assertion failed at: "shared/edgglue/edg_expr.c", + // line 2859) on Intel <= 11.1 (Intel support issue 589832, reported by John Maddock, May 2010). + BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY + #endif +#endif + // value_initializer initializes each of its data members by means // of an empty set of parentheses, and allows checking whether @@ -658,7 +669,9 @@ namespace boost_no_complete_value_initialization m_member_function_ptr_struct(), m_member_function_ptr_struct_array(), m_ptr_to_member(), +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY m_ptr_to_member_array(), +#endif m_ptr_to_member_struct(), m_ptr_to_member_struct_array(), m_bit_field_struct(), @@ -759,8 +772,12 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + +#ifdef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY + ( (std::cout << "Skipped m_ptr_to_member_array check\n"), 1) + +#else FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + +#endif FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) + @@ -1007,7 +1024,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 26." + << "\nDetected by boost_no_complete_value_initialization::test() revision 27." << std::endl; } return static_cast(total_num_failures); From 62b3bc6d7737349fc2846ae829cfe63dcf807359 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Mon, 17 May 2010 16:24:58 +0000 Subject: [PATCH 175/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION only to MSVC < 10, in order to check how MSVC 10 is doing. [SVN r62069] --- include/boost/config/compiler/visualc.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index b34db6f1..414400b8 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -100,6 +100,12 @@ # define BOOST_NO_ADL_BARRIER #endif + +// TODO The following condition should probably be #if (_MSC_VER <= 1600). +// However, I need to have a look at the regression page beforehand: +// http://www.boost.org/development/tests/trunk/developer/config.html +// (Niels Dekker, LKEB, May 17, 2010) +#if (_MSC_VER < 1600) // MSVC has not yet completely implemented value-initialization, as // is reported: // "VC++ does not value-initialize members of derived classes without @@ -111,6 +117,7 @@ // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues // (Niels Dekker, LKEB, May 2010) #define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +#endif #if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0 # define BOOST_NO_INITIALIZER_LISTS From 623579d64c12b84cf1525c91df75a6cbc8d2720f Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 18 May 2010 07:32:01 +0000 Subject: [PATCH 176/435] Oops, fixed #define BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY (error detected by Sandia-intel-11.0-64) [SVN r62077] --- test/boost_no_com_value_init.ipp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index e23618b6..37054279 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -524,7 +524,7 @@ namespace boost_no_complete_value_initialization // The following macro indicates that initialization of m_ptr_to_member_array must be skipped. // Such an initialization triggered an internal error (assertion failed at: "shared/edgglue/edg_expr.c", // line 2859) on Intel <= 11.1 (Intel support issue 589832, reported by John Maddock, May 2010). - BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY + #define BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY #endif #endif @@ -1024,7 +1024,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 27." + << "\nDetected by boost_no_complete_value_initialization::test() revision 28." << std::endl; } return static_cast(total_num_failures); From 481fb459174c00e8945f9681aaed1184ba816fa7 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 May 2010 12:02:23 +0000 Subject: [PATCH 177/435] Add support for in VC10. Fixes #4182. [SVN r62082] --- include/boost/config/compiler/visualc.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 414400b8..d0ccf199 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -184,6 +184,9 @@ #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 +#if _MSC_VER >= 1600 +#define BOOST_HAS_STDINT_H +#endif // C++0x features not supported by any versions #define BOOST_NO_CHAR16_T From bbf9896006c2f5c32cf50efdffd97b6110e7b704 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 May 2010 12:05:43 +0000 Subject: [PATCH 178/435] Codegear C++ has static_assert. Fixes #4221. [SVN r62083] --- include/boost/config/compiler/codegear.hpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 76726f67..9cb061ff 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -75,6 +75,11 @@ // // C++0x macros: // +#if (__CODEGEARC__ <= 0x620) +#define BOOST_NO_STATIC_ASSERT +#else +#define BOOST_HAS_STATIC_ASSERT +#endif #define BOOST_HAS_CHAR16_T #define BOOST_HAS_CHAR32_T #define BOOST_HAS_LONG_LONG @@ -100,7 +105,6 @@ #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_STATIC_ASSERT #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES From a134372b3e6fa73f2f7dfb5b7f4bc4455eaa5605 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 18 May 2010 16:27:11 +0000 Subject: [PATCH 179/435] Enhance test case for . Update VC10's configuration with more C++0x features enabled. [SVN r62085] --- include/boost/config/stdlib/dinkumware.hpp | 6 +++++- include/boost/config/suffix.hpp | 7 +++++++ test/boost_no_0x_hdr_tuple.ipp | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index d87f38b1..5d044363 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -105,6 +105,11 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_0X_HDR_TUPLE +#endif + +#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) +# define BOOST_NO_0X_HDR_TUPLE #endif // C++0x headers not yet implemented @@ -119,7 +124,6 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD -# define BOOST_NO_0X_HDR_TUPLE #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 13fd8007..019c9ea0 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -82,6 +82,13 @@ # define BOOST_NO_LONG_LONG_NUMERIC_LIMITS #endif +// +// Normalize BOOST_NO_STATIC_ASSERT and (depricated) BOOST_HAS_STATIC_ASSERT: +// +#if !defined(BOOST_NO_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT) +# define BOOST_HAS_STATIC_ASSERT +#endif + // // if there is no __int64 then there is no specialisation // for numeric_limits<__int64> either: diff --git a/test/boost_no_0x_hdr_tuple.ipp b/test/boost_no_0x_hdr_tuple.ipp index ba311d32..1a3ff456 100644 --- a/test/boost_no_0x_hdr_tuple.ipp +++ b/test/boost_no_0x_hdr_tuple.ipp @@ -16,6 +16,7 @@ namespace boost_no_0x_hdr_tuple { int test() { + std::tuple t(0, 1, 2); return 0; } From f19e192f68a2ebfad5286ab085db925cbd0c65b6 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 18 May 2010 17:55:32 +0000 Subject: [PATCH 180/435] Add a BOOST_CLANG macro to indicate when Clang is used. [SVN r62089] --- doc/macro_reference.qbk | 3 +++ include/boost/config/compiler/clang.hpp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index ac46a412..0843da53 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -835,6 +835,9 @@ PPPPP is the compiler build number. Defined if the compiler is an Intel compiler, takes the same value as the compiler version macro. ]] +[[`BOOST_CLANG`][``][ +Defined to 1 if the compiler is the Clang compiler. +]] [[`BOOST_WINDOWS`][``][ Defined if the Windows platfrom API is available. ]] diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 53339b4c..e5a682b2 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -69,3 +69,7 @@ #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ #endif + +// Macro used to identify the Clang compiler. +#define BOOST_CLANG 1 + From fce2db38750e127884cb37a119b089518df6cadf Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Wed, 19 May 2010 09:54:06 +0000 Subject: [PATCH 181/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to VC++ 10.0 (trunk), see #4080. [SVN r62094] --- include/boost/config/compiler/visualc.hpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index d0ccf199..e52ddcec 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -101,16 +101,15 @@ #endif -// TODO The following condition should probably be #if (_MSC_VER <= 1600). -// However, I need to have a look at the regression page beforehand: -// http://www.boost.org/development/tests/trunk/developer/config.html -// (Niels Dekker, LKEB, May 17, 2010) -#if (_MSC_VER < 1600) -// MSVC has not yet completely implemented value-initialization, as -// is reported: +#if (_MSC_VER <= 1600) +// MSVC (including the latest checked version) has not yet completely +// implemented value-initialization, as is reported: // "VC++ does not value-initialize members of derived classes without // user-declared constructor", reported in 2009 by Sylvester Hesp: // https://connect.microsoft.com/VisualStudio/feedback/details/484295 +// "Presence of copy constructor breaks member class initialization", +// reported in 2009 by Alex Vakulenko: +// https://connect.microsoft.com/VisualStudio/feedback/details/499606 // "Value-initialization in new-expression", reported in 2005 by // Pavel Kuznetsov (MetaCommunications Engineering): // https://connect.microsoft.com/VisualStudio/feedback/details/100744 From ff36d0b7c556a321d6367b2f9a98b40c85ea919f Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Thu, 20 May 2010 15:56:59 +0000 Subject: [PATCH 182/435] Temporarily skipped value-initialization of m_ptr_to_member, as well as m_ptr_to_member_array for Intel <= 11.1, still trying to avoid the internal error, Intel support issue 589832. [SVN r62114] --- test/boost_no_com_value_init.ipp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 37054279..9651b54d 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -521,10 +521,10 @@ namespace boost_no_complete_value_initialization // It should be removed later this month, and is certainly not meant to become part of the release branch!!! #ifdef __INTEL_COMPILER #if __INTEL_COMPILER <= 1110 - // The following macro indicates that initialization of m_ptr_to_member_array must be skipped. + // The following macro indicates that initialization of ptr_to_member must be skipped. // Such an initialization triggered an internal error (assertion failed at: "shared/edgglue/edg_expr.c", // line 2859) on Intel <= 11.1 (Intel support issue 589832, reported by John Maddock, May 2010). - #define BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY + #define BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER #endif #endif @@ -576,8 +576,10 @@ namespace boost_no_complete_value_initialization member_function_ptr_type m_member_function_ptr_array[2]; member_function_ptr_struct m_member_function_ptr_struct; member_function_ptr_struct m_member_function_ptr_struct_array[2]; +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER ptr_to_member_type m_ptr_to_member; ptr_to_member_type m_ptr_to_member_array[2]; +#endif ptr_to_member_struct m_ptr_to_member_struct; ptr_to_member_struct m_ptr_to_member_struct_array[2]; bit_field_struct m_bit_field_struct; @@ -668,8 +670,8 @@ namespace boost_no_complete_value_initialization m_member_function_ptr_array(), m_member_function_ptr_struct(), m_member_function_ptr_struct_array(), +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER m_ptr_to_member(), -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY m_ptr_to_member_array(), #endif m_ptr_to_member_struct(), @@ -771,10 +773,10 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + - FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + -#ifdef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER_ARRAY - ( (std::cout << "Skipped m_ptr_to_member_array check\n"), 1) + +#ifdef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER + ( (std::cout << "Note: Skipped ptr_to_member checks\n"), 1) + #else + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + #endif @@ -1024,7 +1026,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 28." + << "\nDetected by boost_no_complete_value_initialization::test() revision 29." << std::endl; } return static_cast(total_num_failures); From 56da3bb7ea69b19380b1e37265b31ac0de7db7ce Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Fri, 21 May 2010 18:03:58 +0000 Subject: [PATCH 183/435] Temporarily skipped value-initialization of all ptr-to-member objects for Intel <= 11.1, as another try to avoid the internal error, Intel support issue 589832. [SVN r62126] --- test/boost_no_com_value_init.ipp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 9651b54d..699ccd23 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -576,10 +576,8 @@ namespace boost_no_complete_value_initialization member_function_ptr_type m_member_function_ptr_array[2]; member_function_ptr_struct m_member_function_ptr_struct; member_function_ptr_struct m_member_function_ptr_struct_array[2]; -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER ptr_to_member_type m_ptr_to_member; ptr_to_member_type m_ptr_to_member_array[2]; -#endif ptr_to_member_struct m_ptr_to_member_struct; ptr_to_member_struct m_ptr_to_member_struct_array[2]; bit_field_struct m_bit_field_struct; @@ -673,9 +671,9 @@ namespace boost_no_complete_value_initialization #ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER m_ptr_to_member(), m_ptr_to_member_array(), -#endif m_ptr_to_member_struct(), m_ptr_to_member_struct_array(), +#endif m_bit_field_struct(), m_bit_field_struct_array(), m_int_struct(), @@ -779,10 +777,10 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + -#endif FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) + +#endif FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) + @@ -868,8 +866,10 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) + +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE(ptr_to_member_type()) + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_struct()) + +#endif FAILED_TO_VALUE_INITIALIZE(int_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + @@ -922,8 +922,10 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + +#endif FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + @@ -1026,7 +1028,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 29." + << "\nDetected by boost_no_complete_value_initialization::test() revision 30." << std::endl; } return static_cast(total_num_failures); From d4a9554db01b4ce70531300af408c8cf44f7b980 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 22 May 2010 12:12:00 +0000 Subject: [PATCH 184/435] =?UTF-8?q?Major=20upgrade=20to=20Boost.Config=20s?= =?UTF-8?q?ymbol=20visibility=20macros=20for=20shared=20libraries,=20based?= =?UTF-8?q?=20on=20patches=20from=20J=C3=BCrgen=20Hunold=20with=20mods=20b?= =?UTF-8?q?y=20Beman=20Dawes.=20=20Upgrade=20Boost.System=20to=20use=20the?= =?UTF-8?q?=20new=20visibility=20macros.=20Fixes=20#3697=20and=20provides?= =?UTF-8?q?=20foundation=20for=20fixing=202114,=202309,=20etc.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [SVN r62140] --- doc/macro_reference.qbk | 100 +++++++++++++++++++-- include/boost/config/compiler/borland.hpp | 5 +- include/boost/config/compiler/clang.hpp | 6 -- include/boost/config/compiler/codegear.hpp | 5 +- include/boost/config/compiler/gcc.hpp | 22 +++++ include/boost/config/compiler/visualc.hpp | 5 -- include/boost/config/platform/win32.hpp | 9 +- include/boost/config/suffix.hpp | 13 +++ 8 files changed, 142 insertions(+), 23 deletions(-) diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 0843da53..94dd204f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -317,6 +317,7 @@ void g() { return f(); } [#config_features] + [section Macros that describe optional features] The following macros describe features that are not required by the C++ @@ -332,10 +333,6 @@ The platform supports BeOS style threads. [[`BOOST_HAS_CLOCK_GETTIME`][Platform][ The platform has the POSIX API `clock_gettime`. ]] -[[`BOOST_HAS_DECLSPEC`][Compiler][ -The compiler uses `__declspec(dllexport)` and `__declspec(dllimport)` to -export/import symbols from dll's. -]] [[`BOOST_HAS_DIRENT_H`][Platform][ The platform has the POSIX header ``. ]] @@ -868,9 +865,98 @@ the configuration. [section Macros for libraries with separate source code] The following macros and helper headers are of use to authors whose libraries -include separate source code, and are intended to address two issues: fixing -the ABI of the compiled library, and selecting which compiled library to link -against based upon the compilers settings. +include separate source code, and are intended to address several issues: + +* Controlling shared library symbol visibility +* Fixing the ABI of the compiled library +* Selecting which compiled library to link against based upon the compilers settings + +See [@http://svn.boost.org/trac/boost/wiki/Guidelines/Separate Guidelines for Authors of Boost Libraries Containing Separate Source] + +[section Macros controlling shared library symbol visibility] + +Some compilers support C++ extensions that control which symbols +will be exported from shared libraries such as dynamic shared objects (DSO's) on Unix-like +systems or dynamic-link libraries (DLL's) on Windows. + +The Microsoft VC++ compiler has long supplied +`__declspec(dllexport)` and `__declspec(dllimport)` extensions for this purpose, +as do virtually all other compilers targeting the Windows platform. + +Modern versions of the GNU GCC compiler provide the `__attribute__((visibility("default")))` +extension to indicate that a symbol should be exported. All other symbols may be hidden by using the +`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switches. + +Boost supplies several macros to make it easier to manage symbol visibility in a way that +is portable between compilers and operating systems. + +[table +[[Macro ][Description ]] +[[`BOOST_SYMBOL_EXPORT`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be exported from a shared library. +If the compiler has no such extension, the macro is defined with no replacement text. +]] +[[`BOOST_SYMBOL_IMPORT`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be imported from a shared library. +If the compiler has no such extension, the macro is defined with no replacement text. +]] +[[`BOOST_SYMBOL_VISIBLE`][ +Defines the syntax of a C++ language extension that indicates a symbol is to be globally visible. +If the compiler has no such extension, the macro is defined with no replacement text. +Needed for classes that are not otherwise exported, but are used by RTTI. Examples include +class for objects that will be thrown as exceptions or used in dynamic_casts, +across shared library boundaries. For example, a header-only exception class might look like this: +`` + class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... }; +`` +Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception thrown from a shared library +compiled by GCC with the -fvisibility=hidden option. +]] +[[`BOOST_HAS_DECLSPEC`][ +The compiler has C++ extensions `__declspec(dllexport)` and `__declspec(dllimport)` to control +export/import of symbols from shared libraries. +['Deprecated. This macro is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT +are now supplied. It is provided to support legacy code.] +]] +] + +Typical usage: + +[*boost/foo/config.hpp] + + ... + #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK) + # if defined(BOOST_FOO_SOURCE) + # define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT + # else + # define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT + # endif + #else + # define BOOST_FOO_DECL + #endif + ... + +[*boost/foo/foo.hpp] + + #include + ... + class BOOST_FOO_DECL bar { ... }; + ... + void BOOST_FOO_DECL f(); + ... + +[*boost/libs/foo/src/foo.cpp] + + #define BOOST_FOO_SOURCE + #include + ... + void BOOST_FOO_DECL f() + { + ... + } + ... + +[endsect] [section ABI Fixing] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index fecc29aa..bd3a8c3f 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -230,8 +230,9 @@ // // all versions support __declspec: // -#ifndef __STRICT_ANSI__ -# define BOOST_HAS_DECLSPEC +#if defined(__STRICT_ANSI__) +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT #endif // // ABI fixing headers: diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index e5a682b2..7aac8c35 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -18,12 +18,6 @@ # define BOOST_NO_RTTI #endif -#if defined(__int32) -// HACK: Clang only defines the type __int32 in Microsoft-compatibility mode, -// which means that declspecs are also available -# define BOOST_HAS_DECLSPEC -#endif - #if defined(__int64) # define BOOST_HAS_MS_INT64 #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index 9cb061ff..f6dc4c02 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -147,8 +147,9 @@ // // all versions support __declspec: // -#if !defined(__STRICT_ANSI__) -# define BOOST_HAS_DECLSPEC +#if defined(__STRICT_ANSI__) +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT #endif // // ABI fixing headers: diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index b9b42bdb..3ba45ddd 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -108,6 +108,28 @@ #if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 ) #define BOOST_HAS_NRVO #endif + +// +// Dynamic shared object (DSO) and dynamic-link library (DLL) support +// +#if __GNUC__ >= 4 +# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + // All Win32 development environments, including 64-bit Windows and MinGW, define + // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, + // so does not define _WIN32 or its variants. +# define BOOST_HAS_DECLSPEC +# define BOOST_SYMBOL_EXPORT __attribute__((dllexport)) +# define BOOST_SYMBOL_IMPORT __attribute__((dllimport)) +# else +# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) +# define BOOST_SYMBOL_IMPORT +# endif +# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) +#else +// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined +# define BOOST_SYMBOL_EXPORT +#endif + // // RTTI and typeinfo detection is possible post gcc-4.3: // diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index e52ddcec..2f89519e 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -163,11 +163,6 @@ # define BOOST_NO_RTTI #endif -// -// all versions support __declspec: -// -#define BOOST_HAS_DECLSPEC - // // C++0x features // diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index 9344818f..f59c4ea7 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -21,10 +21,17 @@ # define BOOST_NO_SWPRINTF #endif -#if !defined(__GNUC__) && !defined(BOOST_HAS_DECLSPEC) +// Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT +// If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport), +// its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and +// BOOST_SYMBOL_IMPORT +#ifndef BOOST_SYMBOL_EXPORT # define BOOST_HAS_DECLSPEC +# define BOOST_SYMBOL_EXPORT __declspec(dllexport) +# define BOOST_SYMBOL_IMPORT __declspec(dllimport) #endif + #if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0))) # define BOOST_HAS_STDINT_H # define __STDC_LIMIT_MACROS diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 019c9ea0..3408d225 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -25,6 +25,19 @@ #ifndef BOOST_CONFIG_SUFFIX_HPP #define BOOST_CONFIG_SUFFIX_HPP +// +// ensure that visibility macros are always defined, thus symplifying use +// +#ifndef BOOST_SYMBOL_EXPORT +# define BOOST_SYMBOL_EXPORT +#endif +#ifndef BOOST_SYMBOL_IMPORT +# define BOOST_SYMBOL_IMPORT +#endif +#ifndef BOOST_SYMBOL_VISIBLE +# define BOOST_SYMBOL_VISIBLE +#endif + // // look for long long by looking for the appropriate macros in . // Note that we use limits.h rather than climits for maximal portability, From 956b95a48fdbd654a3a03fc19c72b4202995ed12 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 22 May 2010 12:54:57 +0000 Subject: [PATCH 185/435] Rebuild docs after changeset 62140 [SVN r62141] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 3814 +++++++++-------- .../guidelines_for_boost_authors.html | 96 +- doc/html/boost_config/rationale.html | 8 +- doc/html/index.html | 654 +-- 5 files changed, 2376 insertions(+), 2200 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 347924f4..d49dfa64 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
PrevUpHome
-
+
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 81957ff3..c5c0d793 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -44,7 +44,7 @@

-
+

Macros that describe defects @@ -62,240 +62,240 @@

-

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -

+

+ BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +

-

- Compiler -

+

+ Compiler +

-

- The compiler exibits certain partial specialisation bug - probably - Borland C++ Builder specific. -

+

+ The compiler exibits certain partial specialisation bug - probably + Borland C++ Builder specific. +

-

- BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -

+

+ BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +

-

- Compiler -

+

+ Compiler +

-

- Argument dependent lookup fails if there is a using declaration for - the symbol being looked up in the current scope. For example, using - boost::get_pointer; prevents ADL from - finding overloads of get_pointer - in namespaces nested inside boost (but not elsewhere). Probably Borland - specific. -

+

+ Argument dependent lookup fails if there is a using declaration + for the symbol being looked up in the current scope. For example, + using boost::get_pointer; prevents ADL from + finding overloads of get_pointer + in namespaces nested inside boost (but not elsewhere). Probably + Borland specific. +

-

- BOOST_NO_ADL_BARRIER -

+

+ BOOST_NO_ADL_BARRIER +

-

- Compiler -

+

+ Compiler +

-

- The compiler locates and searches namespaces that it should *not* - in fact search when performing argument dependent lookup. -

+

+ The compiler locates and searches namespaces that it should *not* + in fact search when performing argument dependent lookup. +

-

- BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -

+

+ BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +

-

- Compiler -

+

+ Compiler +

-

- Compiler does not implement argument-dependent lookup (also named - Koenig lookup); see std::3.4.2 [basic.koenig.lookup] -

+

+ Compiler does not implement argument-dependent lookup (also named + Koenig lookup); see std::3.4.2 [basic.koenig.lookup] +

-

- BOOST_NO_AUTO_PTR -

+

+ BOOST_NO_AUTO_PTR +

-

- Standard library -

+

+ Standard library +

-

- If the compiler / library supplies non-standard or broken std::auto_ptr. -

+

+ If the compiler / library supplies non-standard or broken std::auto_ptr. +

-

- BOOST_NO_COMPLETE_VALUE_INITIALIZATION -

+

+ BOOST_NO_COMPLETE_VALUE_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler has not completely implemented value-initialization. See - also The - Utility/Value Init docs -

+

+ Compiler has not completely implemented value-initialization. See + also The + Utility/Value Init docs +

-

- BOOST_NO_CTYPE_FUNCTIONS -

+

+ BOOST_NO_CTYPE_FUNCTIONS +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide functions for the character-classifying - operations <ctype.h> and <cctype>, - only macros. -

+

+ The Platform does not provide functions for the character-classifying + operations <ctype.h> and <cctype>, + only macros. +

-

- BOOST_NO_CV_SPECIALIZATIONS -

+

+ BOOST_NO_CV_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-qualified types conflict with - a specialisation for a cv-unqualififed type. -

+

+ If template specialisations for cv-qualified types conflict with + a specialisation for a cv-unqualififed type. +

-

- BOOST_NO_CV_VOID_SPECIALIZATIONS -

+

+ BOOST_NO_CV_VOID_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-void types conflict with a specialisation - for void. -

+

+ If template specialisations for cv-void types conflict with a specialisation + for void. +

-

- BOOST_NO_CWCHAR -

+

+ BOOST_NO_CWCHAR +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wchar.h> - and <cwchar>. -

+

+ The Platform does not provide <wchar.h> + and <cwchar>. +

-

- BOOST_NO_CWCTYPE -

+

+ BOOST_NO_CWCTYPE +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wctype.h> - and <cwctype>. -

+

+ The Platform does not provide <wctype.h> + and <cwctype>. +

-

- BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -

+

+ BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler fails to compile a nested class that has a dependent - base class: +

+ The compiler fails to compile a nested class that has a dependent + base class:

template<typename T>
 struct foo : {
@@ -303,106 +303,106 @@
    struct bar : public U {};
 

- }; -

+ }; +

-

- BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -

+

+ BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Template value parameters cannot have a dependent type, for example: - +

+ Template value parameters cannot have a dependent type, for example: +

template<class T, typename T::type value> 
 class X { ... };
 

-

+

-

- BOOST_NO_EXCEPTION_STD_NAMESPACE -

+

+ BOOST_NO_EXCEPTION_STD_NAMESPACE +

-

- Standard Library -

+

+ Standard Library +

-

- The standard library does not put some or all of the contents of - <exception> in namespace std. -

+

+ The standard library does not put some or all of the contents of + <exception> in namespace std. +

-

- BOOST_NO_EXCEPTIONS -

+

+ BOOST_NO_EXCEPTIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support exception handling (this setting is - typically required by many C++ compilers for embedded platforms). - Note that there is no requirement for boost libraries to honor this - configuration setting - indeed doing so may be impossible in some - cases. Those libraries that do honor this will typically abort if - a critical error occurs - you have been warned! -

+

+ The compiler does not support exception handling (this setting + is typically required by many C++ compilers for embedded platforms). + Note that there is no requirement for boost libraries to honor + this configuration setting - indeed doing so may be impossible + in some cases. Those libraries that do honor this will typically + abort if a critical error occurs - you have been warned! +

-

- BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -

+

+ BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +

-

- Compiler -

+

+ Compiler +

-

- Can only use deduced template arguments when calling function template - instantiations. -

+

+ Can only use deduced template arguments when calling function template + instantiations. +

-

- BOOST_NO_FUNCTION_TEMPLATE_ORDERING -

+

+ BOOST_NO_FUNCTION_TEMPLATE_ORDERING +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not perform function template ordering or its function - template ordering is incorrect. +

+ The compiler does not perform function template ordering or its + function template ordering is incorrect.

// #1
 template<class T> void f(T);
@@ -415,876 +415,875 @@
 f(&bar); // should choose #2.
 

-

+

-

- BOOST_NO_INCLASS_MEMBER_INITIALIZATION -

+

+ BOOST_NO_INCLASS_MEMBER_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler violates std::9.4.2/4. -

+

+ Compiler violates std::9.4.2/4. +

-

- BOOST_NO_INTRINSIC_WCHAR_T -

+

+ BOOST_NO_INTRINSIC_WCHAR_T +

-

- Compiler -

+

+ Compiler +

-

- The C++ implementation does not provide wchar_t, - or it is really a synonym for another integral type. Use this symbol - to decide whether it is appropriate to explicitly specialize a template - on wchar_t if there - is already a specialization for other integer types. -

+

+ The C++ implementation does not provide wchar_t, + or it is really a synonym for another integral type. Use this symbol + to decide whether it is appropriate to explicitly specialize a + template on wchar_t + if there is already a specialization for other integer types. +

-

- BOOST_NO_IOSFWD -

+

+ BOOST_NO_IOSFWD +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iosfwd>. -

+

+ The standard library lacks <iosfwd>. +

-

- BOOST_NO_IOSTREAM -

+

+ BOOST_NO_IOSTREAM +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iostream>, - <istream> or <ostream>. -

+

+ The standard library lacks <iostream>, + <istream> or <ostream>. +

-

- BOOST_NO_IS_ABSTRACT -

+

+ BOOST_NO_IS_ABSTRACT +

-

- Compiler -

+

+ Compiler +

-

- The C++ compiler does not support SFINAE with abstract types, this - is covered by Core - Language DR337, but is not part of the current standard. - Fortunately most compilers that support SFINAE also support this - DR. -

+

+ The C++ compiler does not support SFINAE with abstract types, this + is covered by Core + Language DR337, but is not part of the current standard. + Fortunately most compilers that support SFINAE also support this + DR. +

-

- BOOST_NO_LIMITS -

+

+ BOOST_NO_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation does not provide the <limits> - header. Never check for this symbol in library code; always include - <boost/limits.hpp>, which guarantees to provide - std::numeric_limits. -

+

+ The C++ implementation does not provide the <limits> + header. Never check for this symbol in library code; always include + <boost/limits.hpp>, which guarantees to provide + std::numeric_limits. +

-

- BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -

+

+ BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +

-

- Standard library -

+

+ Standard library +

-

- Constants such as numeric_limits<T>::is_signed - are not available for use at compile-time. -

+

+ Constants such as numeric_limits<T>::is_signed + are not available for use at compile-time. +

-

- BOOST_NO_LONG_LONG_NUMERIC_LIMITS -

+

+ BOOST_NO_LONG_LONG_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There is no specialization for numeric_limits<long - long> - and numeric_limits<unsigned - long long>. <boost/limits.hpp> - will then add these specializations as a standard library "fix" - only if the compiler supports the long - long datatype. -

+

+ There is no specialization for numeric_limits<long + long> + and numeric_limits<unsigned + long long>. <boost/limits.hpp> + will then add these specializations as a standard library "fix" + only if the compiler supports the long + long datatype. +

-

- BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -

+

+ BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the specialization of individual member - functions of template classes. -

+

+ The compiler does not support the specialization of individual + member functions of template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_KEYWORD -

+

+ BOOST_NO_MEMBER_TEMPLATE_KEYWORD +

-

- Compiler -

+

+ Compiler +

-

- If the compiler supports member templates, but not the template keyword - when accessing member template classes. -

+

+ If the compiler supports member templates, but not the template + keyword when accessing member template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_FRIENDS -

+

+ BOOST_NO_MEMBER_TEMPLATE_FRIENDS +

-

- Compiler -

+

+ Compiler +

-

- Member template friend syntax (template<class - P> - friend class - frd;) - described in the C++ Standard, 14.5.3, not supported. -

+

+ Member template friend syntax (template<class + P> + friend class + frd;) + described in the C++ Standard, 14.5.3, not supported. +

-

- BOOST_NO_MEMBER_TEMPLATES -

+

+ BOOST_NO_MEMBER_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- Member template functions not fully supported. -

+

+ Member template functions not fully supported. +

-

- BOOST_NO_MS_INT64_NUMERIC_LIMITS -

+

+ BOOST_NO_MS_INT64_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned - __int64>. - <boost/limits.hpp> will then add these specializations - as a standard library "fix", only if the compiler supports - the __int64 datatype. -

+

+ There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned + __int64>. + <boost/limits.hpp> will then add these specializations + as a standard library "fix", only if the compiler supports + the __int64 datatype. +

-

- BOOST_NO_NESTED_FRIENDSHIP -

+

+ BOOST_NO_NESTED_FRIENDSHIP +

-

- Compiler -

+

+ Compiler +

-

- Compiler doesn't allow a nested class to access private members of - its containing class. Probably Borland/CodeGear specific. -

+

+ Compiler doesn't allow a nested class to access private members + of its containing class. Probably Borland/CodeGear specific. +

-

- BOOST_NO_OPERATORS_IN_NAMESPACE -

+

+ BOOST_NO_OPERATORS_IN_NAMESPACE +

-

- Compiler -

+

+ Compiler +

-

- Compiler requires inherited operator friend functions to be defined - at namespace scope, then using'ed to boost. Probably GCC specific. - See <boost/operators.hpp> - for example. -

+

+ Compiler requires inherited operator friend functions to be defined + at namespace scope, then using'ed to boost. Probably GCC specific. + See <boost/operators.hpp> for example. +

-

- BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS -

+

+ BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle partial specializations which - depend upon default arguments in the primary template. -

+

+ The compiler does not correctly handle partial specializations + which depend upon default arguments in the primary template. +

-

- BOOST_NO_POINTER_TO_MEMBER_CONST -

+

+ BOOST_NO_POINTER_TO_MEMBER_CONST +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle pointers to const member functions, - preventing use of these in overloaded function templates. See <boost/functional.hpp> - for example. -

+

+ The compiler does not correctly handle pointers to const member + functions, preventing use of these in overloaded function templates. + See <boost/functional.hpp> for example. +

-

- BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -

+

+ BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Pointers to members don't work when used as template parameters. -

+

+ Pointers to members don't work when used as template parameters. +

-

- BOOST_NO_PRIVATE_IN_AGGREGATE -

+

+ BOOST_NO_PRIVATE_IN_AGGREGATE +

-

- Compiler -

+

+ Compiler +

-

- The compiler misreads 8.5.1, treating classes as non-aggregate if - they contain private or protected member functions. -

+

+ The compiler misreads 8.5.1, treating classes as non-aggregate + if they contain private or protected member functions. +

-

- BOOST_NO_RTTI -

+

+ BOOST_NO_RTTI +

-

- Compiler -

+

+ Compiler +

-

- The compiler may (or may not) have the typeid operator, but RTTI - on the dynamic type of an object is not supported. -

+

+ The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. +

-

- BOOST_NO_SFINAE -

+

+ BOOST_NO_SFINAE +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the "Substitution Failure Is Not - An Error" meta-programming idiom. -

+

+ The compiler does not support the "Substitution Failure Is + Not An Error" meta-programming idiom. +

-

- BOOST_NO_SFINAE_EXPR -

+

+ BOOST_NO_SFINAE_EXPR +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support usage of SFINAE with arbitrary expressions. -

+

+ The compiler does not support usage of SFINAE with arbitrary expressions. +

-

- BOOST_NO_STD_ALLOCATOR -

+

+ BOOST_NO_STD_ALLOCATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide a standards conforming - std::allocator. -

+

+ The C++ standard library does not provide a standards conforming + std::allocator. +

-

- BOOST_NO_STD_DISTANCE -

+

+ BOOST_NO_STD_DISTANCE +

-

- Standard library -

+

+ Standard library +

-

- The platform does not have a conforming version of std::distance. -

+

+ The platform does not have a conforming version of std::distance. +

-

- BOOST_NO_STD_ITERATOR -

+

+ BOOST_NO_STD_ITERATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation fails to provide the std::iterator - class. -

+

+ The C++ implementation fails to provide the std::iterator + class. +

-

- BOOST_NO_STD_ITERATOR_TRAITS -

+

+ BOOST_NO_STD_ITERATOR_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The compiler does not provide a standard compliant implementation - of std::iterator_traits. Note that the - compiler may still have a non-standard implementation. -

+

+ The compiler does not provide a standard compliant implementation + of std::iterator_traits. Note that the + compiler may still have a non-standard implementation. +

-

- BOOST_NO_STD_LOCALE -

+

+ BOOST_NO_STD_LOCALE +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::locale. -

+

+ The standard library lacks std::locale. +

-

- BOOST_NO_STD_MESSAGES -

+

+ BOOST_NO_STD_MESSAGES +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::messages - facet. -

+

+ The standard library lacks a conforming std::messages + facet. +

-

- BOOST_NO_STD_MIN_MAX -

+

+ BOOST_NO_STD_MIN_MAX +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide the min() and max() template functions that should - be in <algorithm>. -

+

+ The C++ standard library does not provide the min() and max() template functions that should + be in <algorithm>. +

-

- BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -

+

+ BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +

-

- Standard library -

+

+ Standard library +

-

- Defined if the standard library's output iterators are not assignable. -

+

+ Defined if the standard library's output iterators are not assignable. +

-

- BOOST_NO_STD_TYPEINFO -

+

+ BOOST_NO_STD_TYPEINFO +

-

- Standard library -

+

+ Standard library +

-

- The <typeinfo> header declares type_info - in the global namespace instead of namespace std. -

+

+ The <typeinfo> header declares type_info + in the global namespace instead of namespace std. +

-

- BOOST_NO_STD_USE_FACET -

+

+ BOOST_NO_STD_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet. -

+

+ The standard library lacks a conforming std::use_facet. +

-

- BOOST_NO_STD_WSTREAMBUF -

+

+ BOOST_NO_STD_WSTREAMBUF +

-

- Standard library -

+

+ Standard library +

-

- The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, - or buggy. -

+

+ The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, + or buggy. +

-

- BOOST_NO_STD_WSTRING -

+

+ BOOST_NO_STD_WSTRING +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::wstring. -

+

+ The standard library lacks std::wstring. +

-

- BOOST_NO_STDC_NAMESPACE -

+

+ BOOST_NO_STDC_NAMESPACE +

-

- Compiler, Platform -

+

+ Compiler, Platform +

-

- The contents of C++ standard headers for C library functions (the - <c...> headers) have not been placed - in namespace std. This test is difficult - some libraries "fake" - the std C functions by adding using declarations to import them into - namespace std, unfortunately they don't necessarily catch all of - them... -

+

+ The contents of C++ standard headers for C library functions (the + <c...> headers) have not been placed + in namespace std. This test is difficult - some libraries "fake" + the std C functions by adding using declarations to import them + into namespace std, unfortunately they don't necessarily catch + all of them... +

-

- BOOST_NO_STRINGSTREAM -

+

+ BOOST_NO_STRINGSTREAM +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation does not provide the <sstream> - header. -

+

+ The C++ implementation does not provide the <sstream> + header. +

-

- BOOST_NO_SWPRINTF -

+

+ BOOST_NO_SWPRINTF +

-

- Platform -

+

+ Platform +

-

- The platform does not have a conforming version of swprintf. -

+

+ The platform does not have a conforming version of swprintf. +

-

- BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -

+

+ BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Class template partial specialization (14.5.4 [temp.class.spec]) - not supported. -

+

+ Class template partial specialization (14.5.4 [temp.class.spec]) + not supported. +

-

- BOOST_NO_TEMPLATED_IOSTREAMS -

+

+ BOOST_NO_TEMPLATED_IOSTREAMS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iostream classes. -

+

+ The standard library does not provide templated iostream classes. +

-

- BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -

+

+ BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iterator constructors - for its containers. -

+

+ The standard library does not provide templated iterator constructors + for its containers. +

-

- BOOST_NO_TEMPLATE_TEMPLATES -

+

+ BOOST_NO_TEMPLATE_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support template template parameters. -

+

+ The compiler does not support template template parameters. +

-

- BOOST_NO_TYPEID -

+

+ BOOST_NO_TYPEID +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the typeid operator at all. -

+

+ The compiler does not support the typeid operator at all. +

-

- BOOST_NO_TYPENAME_WITH_CTOR -

+

+ BOOST_NO_TYPENAME_WITH_CTOR +

-

- Compiler -

+

+ Compiler +

-

- The typename keyword cannot be used when creating a temporary of - a Dependent type. -

+

+ The typename keyword cannot be used when creating a temporary of + a Dependent type. +

-

- BOOST_NO_UNREACHABLE_RETURN_DETECTION -

+

+ BOOST_NO_UNREACHABLE_RETURN_DETECTION +

-

- Compiler -

+

+ Compiler +

-

- If a return is unreachable, then no return statement should be required, - however some compilers insist on it, while other issue a bunch of - warnings if it is in fact present. -

+

+ If a return is unreachable, then no return statement should be + required, however some compilers insist on it, while other issue + a bunch of warnings if it is in fact present. +

-

- BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -

+

+ BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +

-

- Compiler -

+

+ Compiler +

-

- The compiler will not accept a using declaration that brings a function - from a typename used as a base class into a derived class if functions - of the same name are present in the derived class. -

+

+ The compiler will not accept a using declaration that brings a + function from a typename used as a base class into a derived class + if functions of the same name are present in the derived class. +

-

- BOOST_NO_USING_TEMPLATE -

+

+ BOOST_NO_USING_TEMPLATE +

-

- Compiler -

+

+ Compiler +

-

- The compiler will not accept a using declaration that imports a template - class or function from another namespace. Originally a Borland specific - problem with imports to/from the global namespace, extended to MSVC6 - which has a specific issue with importing template classes (but not - functions). -

+

+ The compiler will not accept a using declaration that imports a + template class or function from another namespace. Originally a + Borland specific problem with imports to/from the global namespace, + extended to MSVC6 which has a specific issue with importing template + classes (but not functions). +

-

- BOOST_NO_VOID_RETURNS -

+

+ BOOST_NO_VOID_RETURNS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not allow a void function to return the result - of calling another void function. +

+ The compiler does not allow a void function to return the result + of calling another void function.

void f() {}
 void g() { return f(); }
 

-

+

-

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_HAS_BETHREADS -

+

+ BOOST_HAS_BETHREADS +

-

- Platform -

+

+ Platform +

-

- The platform supports BeOS style threads. -

+

+ The platform supports BeOS style threads. +

-

- BOOST_HAS_CLOCK_GETTIME -

+

+ BOOST_HAS_CLOCK_GETTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API clock_gettime. -

+

+ The platform has the POSIX API clock_gettime. +

-

- BOOST_HAS_DECLSPEC -

+

+ BOOST_HAS_DIRENT_H +

-

- Compiler -

+

+ Platform +

-

- The compiler uses __declspec(dllexport) and __declspec(dllimport) to export/import symbols from dll's. -

+

+ The platform has the POSIX header <dirent.h>. +

-

- BOOST_HAS_DIRENT_H -

+

+ BOOST_HAS_EXPM1 +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX header <dirent.h>. -

+

+ The platform has the functions expm1, + expm1f and expm1l in <math.h> +

-

- BOOST_HAS_EXPM1 -

+

+ BOOST_HAS_FTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the functions expm1, - expm1f and expm1l in <math.h> -

+

+ The platform has the Win32 API GetSystemTimeAsFileTime. +

-

- BOOST_HAS_FTIME -

+

+ BOOST_HAS_GETTIMEOFDAY +

-

- Platform -

+

+ Platform +

-

- The platform has the Win32 API GetSystemTimeAsFileTime. -

+

+ The platform has the POSIX API gettimeofday. +

-

- BOOST_HAS_GETTIMEOFDAY -

+

+ BOOST_HAS_HASH +

-

- Platform -

+

+ Standard library +

-

- The platform has the POSIX API gettimeofday. -

+

+ The C++ implementation provides the (SGI) hash_set and hash_map + classes. When defined, BOOST_HASH_SET_HEADER + and BOOST_HASH_LIST_HEADER + will contain the names of the header needed to access hash_set + and hash_map; BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which the two class templates reside. +

-

- BOOST_HAS_HASH -

+

+ BOOST_HAS_LOG1P +

-

- Standard library -

+

+ Platform +

-

- The C++ implementation provides the (SGI) hash_set and hash_map classes. - When defined, BOOST_HASH_SET_HEADER - and BOOST_HASH_LIST_HEADER - will contain the names of the header needed to access hash_set and - hash_map; BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which the two class templates reside. -

+

+ The platform has the functions log1p, + log1pf and log1pl in <math.h>. +

-

- BOOST_HAS_LOG1P -

+

+ BOOST_HAS_MACRO_USE_FACET +

-

- Platform -

+

+ Standard library +

-

- The platform has the functions log1p, - log1pf and log1pl in <math.h>. -

+

+ The standard library lacks a conforming std::use_facet, + but has a macro _USE(loc, Type) that does the job. This is primarily + for the Dinkumware std lib. +

-

- BOOST_HAS_MACRO_USE_FACET -

+

+ BOOST_HAS_MS_INT64 +

-

- Standard library -

+

+ Compiler +

-

- The standard library lacks a conforming std::use_facet, - but has a macro _USE(loc, Type) that does the job. This is primarily - for the Dinkumware std lib. -

+

+ The compiler supports the __int64 + data type. +

-

- BOOST_HAS_MS_INT64 -

+

+ BOOST_HAS_NANOSLEEP +

-

- Compiler -

+

+ Platform +

-

- The compiler supports the __int64 - data type. -

+

+ The platform has the POSIX API nanosleep. +

-

- BOOST_HAS_NANOSLEEP -

+

+ BOOST_HAS_NL_TYPES_H +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API nanosleep. -

+

+ The platform has an <nl_types.h>. +

-

- BOOST_HAS_NL_TYPES_H -

+

+ BOOST_HAS_NRVO +

-

- Platform -

+

+ Compiler +

-

- The platform has an <nl_types.h>. -

+

+ Indicated that the compiler supports the named return value optimization + (NRVO). Used to select the most efficient implementation for some + function. See <boost/operators.hpp> for example. +

-

- BOOST_HAS_NRVO -

+

+ BOOST_HAS_PARTIAL_STD_ALLOCATOR +

-

- Compiler -

+

+ Standard Library +

-

- Indicated that the compiler supports the named return value optimization - (NRVO). Used to select the most efficient implementation for some - function. See <boost/operators.hpp> for example. -

+

+ The standard library has a partially conforming std::allocator + class, but without any of the member templates. +

-

- BOOST_HAS_PARTIAL_STD_ALLOCATOR -

+

+ BOOST_HAS_PTHREAD_DELAY_NP +

-

- Standard Library -

+

+ Platform +

-

- The standard library has a partially conforming std::allocator - class, but without any of the member templates. -

+

+ The platform has the POSIX API pthread_delay_np. +

-

- BOOST_HAS_PTHREAD_DELAY_NP -

+

+ BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_delay_np. -

+

+ The platform has the POSIX API pthread_mutexattr_settype. +

-

- BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -

+

+ BOOST_HAS_PTHREAD_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_mutexattr_settype. -

+

+ The platform has the POSIX API pthread_yield. +

-

- BOOST_HAS_PTHREAD_YIELD -

+

+ BOOST_HAS_PTHREADS +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_yield. -

+

+ The platform support POSIX style threads. +

-

- BOOST_HAS_PTHREADS -

+

+ BOOST_HAS_SCHED_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform support POSIX style threads. -

+

+ The platform has the POSIX API sched_yield. +

-

- BOOST_HAS_SCHED_YIELD -

+

+ BOOST_HAS_SGI_TYPE_TRAITS +

-

- Platform -

+

+ Compiler, Standard library +

-

- The platform has the POSIX API sched_yield. -

+

+ The compiler has native support for SGI style type traits. +

-

- BOOST_HAS_SGI_TYPE_TRAITS -

+

+ BOOST_HAS_STDINT_H +

-

- Compiler, Standard library -

+

+ Platform +

-

- The compiler has native support for SGI style type traits. -

+

+ The platform has a <stdint.h> +

-

- BOOST_HAS_STDINT_H -

+

+ BOOST_HAS_SLIST +

-

- Platform -

+

+ Standard library +

-

- The platform has a <stdint.h> -

+

+ The C++ implementation provides the (SGI) slist class. When defined, + BOOST_SLIST_HEADER + will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which slist + resides. +

-

- BOOST_HAS_SLIST -

+

+ BOOST_HAS_STLP_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation provides the (SGI) slist class. When defined, - BOOST_SLIST_HEADER - will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which slist - resides. -

+

+ The standard library lacks a conforming std::use_facet, + but has a workaround class-version that does the job. This is primarily + for the STLport std lib. +

-

- BOOST_HAS_STLP_USE_FACET -

+

+ BOOST_HAS_TR1_ARRAY +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet, - but has a workaround class-version that does the job. This is primarily - for the STLport std lib. -

+

+ The library has a TR1 conforming version of <array>. +

-

- BOOST_HAS_TR1_ARRAY -

+

+ BOOST_HAS_TR1_COMPLEX_OVERLOADS +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <array>. -

+

+ The library has a version of <complex> + that supports passing scalars to the complex number algorithms. +

-

- BOOST_HAS_TR1_COMPLEX_OVERLOADS -

+

+ BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that supports passing scalars to the complex number algorithms. -

+

+ The library has a version of <complex> + that includes the new inverse trig functions from TR1. +

-

- BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -

+

+ BOOST_HAS_TR1_REFERENCE_WRAPPER +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that includes the new inverse trig functions from TR1. -

+

+ The library has TR1 conforming reference wrappers in <functional>. +

-

- BOOST_HAS_TR1_REFERENCE_WRAPPER -

+

+ BOOST_HAS_TR1_RESULT_OF +

-

- Standard library -

+

+ Standard library +

-

- The library has TR1 conforming reference wrappers in <functional>. -

+

+ The library has a TR1 conforming result_of template in <functional>. +

-

- BOOST_HAS_TR1_RESULT_OF -

+

+ BOOST_HAS_TR1_MEM_FN +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming result_of template in <functional>. -

+

+ The library has a TR1 conforming mem_fn function template in <functional>. +

-

- BOOST_HAS_TR1_MEM_FN -

+

+ BOOST_HAS_TR1_BIND +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming mem_fn function template in <functional>. -

+

+ The library has a TR1 conforming bind function template in <functional>. +

-

- BOOST_HAS_TR1_BIND -

+

+ BOOST_HAS_TR1_FUNCTION +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming bind function template in <functional>. -

+

+ The library has a TR1 conforming function class template in <functional>. +

-

- BOOST_HAS_TR1_FUNCTION -

+

+ BOOST_HAS_TR1_HASH +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming function class template in <functional>. -

+

+ The library has a TR1 conforming hash function template in <functional>. +

-

- BOOST_HAS_TR1_HASH -

+

+ BOOST_HAS_TR1_SHARED_PTR +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming hash function template in <functional>. -

+

+ The library has a TR1 conforming shared_ptr + class template in <memory>. +

-

- BOOST_HAS_TR1_SHARED_PTR -

+

+ BOOST_HAS_TR1_RANDOM +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming shared_ptr - class template in <memory>. -

+

+ The library has a TR1 conforming version of <random>. +

-

- BOOST_HAS_TR1_RANDOM -

+

+ BOOST_HAS_TR1_REGEX +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <random>. -

+

+ The library has a TR1 conforming version of <regex>. +

-

- BOOST_HAS_TR1_REGEX -

+

+ BOOST_HAS_TR1_TUPLE +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <regex>. -

+

+ The library has a TR1 conforming version of <tuple>. +

-

- BOOST_HAS_TR1_TUPLE -

+

+ BOOST_HAS_TR1_TYPE_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <tuple>. -

+

+ The library has a TR1 conforming version of <type_traits>. +

-

- BOOST_HAS_TR1_TYPE_TRAITS -

+

+ BOOST_HAS_TR1_UTILITY +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <type_traits>. -

+

+ The library has the TR1 additions to <utility> + (tuple interface to std::pair). +

-

- BOOST_HAS_TR1_UTILITY -

+

+ BOOST_HAS_TR1_UNORDERED_MAP +

-

- Standard library -

+

+ Standard library +

-

- The library has the TR1 additions to <utility> - (tuple interface to std::pair). -

+

+ The library has a TR1 conforming version of <unordered_map>. +

-

- BOOST_HAS_TR1_UNORDERED_MAP -

+

+ BOOST_HAS_TR1_UNORDERED_SET +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_map>. -

+

+ The library has a TR1 conforming version of <unordered_set>. +

-

- BOOST_HAS_TR1_UNORDERED_SET -

+

+ BOOST_HAS_TR1 +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_set>. -

+

+ Implies all the other BOOST_HAS_TR1_* macros should be set. +

-

- BOOST_HAS_TR1 -

+

+ BOOST_HAS_THREADS +

-

- Standard library -

+

+ Platform, Compiler +

-

- Implies all the other BOOST_HAS_TR1_* macros should be set. -

+

+ Defined if the compiler, in its current translation mode, supports + multiple threads of execution. +

-

- BOOST_HAS_THREADS -

+

+ BOOST_HAS_TWO_ARG_USE_FACET +

-

- Platform, Compiler -

+

+ Standard library +

-

- Defined if the compiler, in its current translation mode, supports - multiple threads of execution. -

+

+ The standard library lacks a conforming std::use_facet, but has + a two argument version that does the job. This is primarily for + the Rogue Wave std lib. +

-

- BOOST_HAS_TWO_ARG_USE_FACET -

+

+ BOOST_HAS_UNISTD_H +

-

- Standard library -

+

+ Platform +

-

- The standard library lacks a conforming std::use_facet, but has a - two argument version that does the job. This is primarily for the - Rogue Wave std lib. -

+

+ The Platform provides <unistd.h>. +

-

- BOOST_HAS_UNISTD_H -

+

+ BOOST_HAS_WINTHREADS +

-

- Platform -

+

+ Platform +

-

- The Platform provides <unistd.h>. -

+

+ The platform supports MS Windows style threads. +

-

- BOOST_HAS_WINTHREADS -

+

+ BOOST_MSVC_STD_ITERATOR +

-

- Platform -

+

+ Standard library +

-

- The platform supports MS Windows style threads. -

+

+ Microsoft's broken version of std::iterator + is being used. This implies that std::iterator + takes no more than two template parameters. +

-

- BOOST_MSVC_STD_ITERATOR -

+

+ BOOST_MSVC6_MEMBER_TEMPLATES +

-

- Standard library -

+

+ Compiler +

-

- Microsoft's broken version of std::iterator - is being used. This implies that std::iterator - takes no more than two template parameters. -

+

+ Microsoft Visual C++ 6.0 has enough member template idiosyncrasies + (being polite) that BOOST_NO_MEMBER_TEMPLATES + is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES + is defined to allow compiler specific workarounds. This macro gets + defined automatically if BOOST_NO_MEMBER_TEMPLATES + is not defined - in other words this is treated as a strict subset + of the features required by the standard. +

-

- BOOST_MSVC6_MEMBER_TEMPLATES -

+

+ BOOST_HAS_STDINT_H +

-

- Compiler -

+

+ Platform +

-

- Microsoft Visual C++ 6.0 has enough member template idiosyncrasies - (being polite) that BOOST_NO_MEMBER_TEMPLATES - is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES - is defined to allow compiler specific workarounds. This macro gets - defined automatically if BOOST_NO_MEMBER_TEMPLATES - is not defined - in other words this is treated as a strict subset - of the features required by the standard. -

-
-

- BOOST_HAS_STDINT_H -

-
-

- Platform -

-
-

- There are no 1998 C++ Standard headers <stdint.h> - or <cstdint>, although the 1999 C Standard - does include <stdint.h>. If <stdint.h> - is present, <boost/stdint.h> can make good use of it, so a - flag is supplied (signalling presence; thus the default is not present, - conforming to the current C++ standard). -

+

+ There are no 1998 C++ Standard headers <stdint.h> + or <cstdint>, although the 1999 C Standard + does include <stdint.h>. + If <stdint.h> is present, <boost/stdint.h> + can make good use of it, so a flag is supplied (signalling presence; + thus the default is not present, conforming to the current C++ + standard). +

-
-

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_HAS_CONCEPTS -

+

+ BOOST_HAS_CONCEPTS +

-

- The compiler supports concepts. -

+

+ The compiler supports concepts. +

-

-

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_NO_0X_HDR_ARRAY -

+

+ BOOST_NO_0X_HDR_ARRAY +

-

- The standard library does not provide header <array>. -

+

+ The standard library does not provide header <array>. +

-

- BOOST_NO_0X_HDR_CHRONO -

+

+ BOOST_NO_0X_HDR_CHRONO +

-

- The standard library does not provide header <chrono>. -

+

+ The standard library does not provide header <chrono>. +

-

- BOOST_NO_0X_HDR_CODECVT -

+

+ BOOST_NO_0X_HDR_CODECVT +

-

- The standard library does not provide header <codecvt>. -

+

+ The standard library does not provide header <codecvt>. +

-

- BOOST_NO_0X_HDR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONCEPTS +

-

- The standard library does not provide header <concepts>. -

+

+ The standard library does not provide header <concepts>. +

-

- BOOST_NO_0X_HDR_CONDITION_VARIABLE -

+

+ BOOST_NO_0X_HDR_CONDITION_VARIABLE +

-

- The standard library does not provide header <condition_variable>. -

+

+ The standard library does not provide header <condition_variable>. +

-

- BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +

-

- The standard library does not provide header <container_concepts>. -

+

+ The standard library does not provide header <container_concepts>. +

-

- BOOST_NO_0X_HDR_FORWARD_LIST -

+

+ BOOST_NO_0X_HDR_FORWARD_LIST +

-

- The standard library does not provide header <forward_list>. -

+

+ The standard library does not provide header <forward_list>. +

-

- BOOST_NO_0X_HDR_FUTURE -

+

+ BOOST_NO_0X_HDR_FUTURE +

-

- The standard library does not provide header <future>. -

+

+ The standard library does not provide header <future>. +

-

- BOOST_NO_0X_HDR_INITIALIZER_LIST -

+

+ BOOST_NO_0X_HDR_INITIALIZER_LIST +

-

- The standard library does not provide header <initializer_list>. -

+

+ The standard library does not provide header <initializer_list>. +

-

- BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +

-

- The standard library does not provide header <iterator_concepts>. -

+

+ The standard library does not provide header <iterator_concepts>. +

-

- BOOST_NO_0X_HDR_MEMORY_CONCEPTS -

+

+ BOOST_NO_0X_HDR_MEMORY_CONCEPTS +

-

- The standard library does not provide header <memory_concepts>. -

+

+ The standard library does not provide header <memory_concepts>. +

-

- BOOST_NO_0X_HDR_MUTEX -

+

+ BOOST_NO_0X_HDR_MUTEX +

-

- The standard library does not provide header <mutex>. -

+

+ The standard library does not provide header <mutex>. +

-

- BOOST_NO_0X_HDR_RANDOM -

+

+ BOOST_NO_0X_HDR_RANDOM +

-

- The standard library does not provide header <random>. -

+

+ The standard library does not provide header <random>. +

-

- BOOST_NO_0X_HDR_RATIO -

+

+ BOOST_NO_0X_HDR_RATIO +

-

- The standard library does not provide header <ratio>. -

+

+ The standard library does not provide header <ratio>. +

-

- BOOST_NO_0X_HDR_REGEX -

+

+ BOOST_NO_0X_HDR_REGEX +

-

- The standard library does not provide header <regex>. -

+

+ The standard library does not provide header <regex>. +

-

- BOOST_NO_0X_HDR_SYSTEM_ERROR -

+

+ BOOST_NO_0X_HDR_SYSTEM_ERROR +

-

- The standard library does not provide header <system_error>. -

+

+ The standard library does not provide header <system_error>. +

-

- BOOST_NO_0X_HDR_THREAD -

+

+ BOOST_NO_0X_HDR_THREAD +

-

- The standard library does not provide header <thread>. -

+

+ The standard library does not provide header <thread>. +

-

- BOOST_NO_0X_HDR_TUPLE -

+

+ BOOST_NO_0X_HDR_TUPLE +

-

- The standard library does not provide header <tuple>. -

+

+ The standard library does not provide header <tuple>. +

-

- BOOST_NO_0X_HDR_TYPE_TRAITS -

+

+ BOOST_NO_0X_HDR_TYPE_TRAITS +

-

- The standard library does not provide header <type_traits>. -

+

+ The standard library does not provide header <type_traits>. +

-

- BOOST_NO_0X_HDR_UNORDERED_MAP -

+

+ BOOST_NO_0X_HDR_UNORDERED_MAP +

-

- The standard library does not provide header <unordered_map>. -

+

+ The standard library does not provide header <unordered_map>. +

-

- BOOST_NO_0X_HDR_UNORDERED_SET -

+

+ BOOST_NO_0X_HDR_UNORDERED_SET +

-

- The standard library does not provide header <unordered_set>. -

+

+ The standard library does not provide header <unordered_set>. +

-

- BOOST_NO_AUTO_DECLARATIONS -

+

+ BOOST_NO_AUTO_DECLARATIONS +

-

- The compiler does not support type deduction for variables declared - with the auto keyword - (auto var - = ...;). -

+

+ The compiler does not support type deduction for variables declared + with the auto keyword + (auto var + = ...;). +

-

- BOOST_NO_AUTO_MULTIDECLARATIONS -

+

+ BOOST_NO_AUTO_MULTIDECLARATIONS +

-

- The compiler does not support type deduction for multiple variables - declared with the auto - keyword (auto var - = ..., - *ptr - = ...;). -

+

+ The compiler does not support type deduction for multiple variables + declared with the auto + keyword (auto var + = ..., + *ptr + = ...;). +

-

- BOOST_NO_CHAR16_T -

+

+ BOOST_NO_CHAR16_T +

-

- The compiler does not support type char16_t. -

+

+ The compiler does not support type char16_t. +

-

- BOOST_NO_CHAR32_T -

+

+ BOOST_NO_CHAR32_T +

-

- The compiler does not support type char32_t. -

+

+ The compiler does not support type char32_t. +

-

- BOOST_NO_CONCEPTS -

+

+ BOOST_NO_CONCEPTS +

-

- The compiler does not support Concepts. -

+

+ The compiler does not support Concepts. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_CONSTEXPR -

+

+ BOOST_NO_CONSTEXPR +

-

- The compiler does not support constexpr. -

+

+ The compiler does not support constexpr. +

-

- BOOST_NO_DECLTYPE -

+

+ BOOST_NO_DECLTYPE +

-

- The compiler does not support decltype. -

+

+ The compiler does not support decltype. +

-

- BOOST_NO_DEFAULTED_FUNCTIONS -

+

+ BOOST_NO_DEFAULTED_FUNCTIONS +

-

- The compiler does not support defaulted (= - default) functions. -

+

+ The compiler does not support defaulted (= + default) functions. +

-

- BOOST_NO_DELETED_FUNCTIONS -

+

+ BOOST_NO_DELETED_FUNCTIONS +

-

- The compiler does not support deleted (= - delete) functions. -

+

+ The compiler does not support deleted (= + delete) functions. +

-

- BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS -

+

+ BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +

-

- The compiler does not support explicit conversion operators (explicit operator - T()). -

+

+ The compiler does not support explicit conversion operators (explicit operator + T()). +

-

- BOOST_NO_EXTERN_TEMPLATE -

+

+ BOOST_NO_EXTERN_TEMPLATE +

-

- The compiler does not support explicit instantiation declarations - for templates (explicit template). -

+

+ The compiler does not support explicit instantiation declarations + for templates (explicit + template). +

-

- BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -

+

+ BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +

-

- The compiler does not support default template arguments for function - templates. -

+

+ The compiler does not support default template arguments for function + templates. +

-

- BOOST_NO_INITIALIZER_LISTS -

+

+ BOOST_NO_INITIALIZER_LISTS +

-

- The C++ compiler does not support C++0x initializer lists. -

+

+ The C++ compiler does not support C++0x initializer lists. +

-

- BOOST_NO_LAMBDAS -

+

+ BOOST_NO_LAMBDAS +

-

- The compiler does not support Lambdas. -

+

+ The compiler does not support Lambdas. +

-

- BOOST_NO_LONG_LONG -

+

+ BOOST_NO_LONG_LONG +

-

- The compiler does not support long - long. -

+

+ The compiler does not support long + long. +

-

- BOOST_NO_NULLPTR -

+

+ BOOST_NO_NULLPTR +

-

- The compiler does not support 'nullptr'. -

+

+ The compiler does not support 'nullptr'. +

-

- BOOST_NO_RAW_LITERALS -

+

+ BOOST_NO_RAW_LITERALS +

-

- The compiler does not support raw string literals. -

+

+ The compiler does not support raw string literals. +

-

- BOOST_NO_RVALUE_REFERENCES -

+

+ BOOST_NO_RVALUE_REFERENCES +

-

- The compiler does not support r-value references. -

+

+ The compiler does not support r-value references. +

-

- BOOST_NO_SCOPED_ENUMS -

+

+ BOOST_NO_SCOPED_ENUMS +

-

- The compiler does not support scoped enumerations (enum class). -

+

+ The compiler does not support scoped enumerations (enum class). +

-

- BOOST_NO_STATIC_ASSERT -

+

+ BOOST_NO_STATIC_ASSERT +

-

- The compiler does not support static_assert. -

+

+ The compiler does not support static_assert. +

-

- BOOST_NO_STD_UNORDERD -

+

+ BOOST_NO_STD_UNORDERD +

-

- The standard library does not support <unordered_map> and <unordered_set>. -

+

+ The standard library does not support <unordered_map> and + <unordered_set>. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_UNICODE_LITERALS -

+

+ BOOST_NO_UNICODE_LITERALS +

-

- The compiler does not support Unicode (u8, - u, U) literals. -

+

+ The compiler does not support Unicode (u8, + u, U) literals. +

-

- BOOST_NO_VARIADIC_TEMPLATES -

+

+ BOOST_NO_VARIADIC_TEMPLATES +

-

- The compiler does not support variadic templates. -

+

+ The compiler does not support variadic templates. +

-

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_WORKAROUND -

+

+ BOOST_WORKAROUND +

-

- This macro is used where a compiler specific workaround is required - that is not otherwise described by one of the other Boost.Config - macros. To use the macro you must first +

+ This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first

#include <boost/detail/workaround.hpp>
 

- usage is then: + usage is then:

#if BOOST_WORKAROUND(MACRONAME, CONDITION)
    // workaround code goes here...
@@ -2891,157 +2876,157 @@
 #endif
 

- where MACRONAME is - a macro that usually describes the version number to be tested against, - and CONDITION is - a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, - <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. -

-

- The macro can also be used with BOOST_TESTED_AT - if all current compiler versions exhibit the issue, but the issue - is expected to be fixed at some later point. -

-

- For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ - unless the macro BOOST_DETECT_OUTDATED_WORKAROUNDS - is defined, in which case evaluates to (__BORLANDC__ <= - 0x590). -

-

- Note: the ultimate source of documentation - for this macro is in boost/detail/workaround.hpp. -

+ where MACRONAME + is a macro that usually describes the version number to be tested + against, and CONDITION + is a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, + <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. +

+

+ The macro can also be used with BOOST_TESTED_AT + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. +

+

+ For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ unless + the macro BOOST_DETECT_OUTDATED_WORKAROUNDS + is defined, in which case evaluates to (__BORLANDC__ <= + 0x590). +

+

+ Note: the ultimate source of documentation + for this macro is in boost/detail/workaround.hpp. +

-

- BOOST_DEDUCED_TYPENAME -

+

+ BOOST_DEDUCED_TYPENAME +

-

- Some compilers don't support the use of typename for dependent types - in deduced contexts. This macro expands to nothing on those compilers, - and typename elsewhere. For example, replace: template - <class - T> - void f(T, typename - T::type); - with: template <class T> void - f(T, BOOST_DEDUCED_TYPENAME T::type); -

+

+ Some compilers don't support the use of typename for dependent + types in deduced contexts. This macro expands to nothing on those + compilers, and typename elsewhere. For example, replace: template <class T> void + f(T, + typename T::type); with: template + <class + T> + void f(T, BOOST_DEDUCED_TYPENAME + T::type); +

-

- BOOST_HASH_MAP_HEADER -

+

+ BOOST_HASH_MAP_HEADER +

-

- The header to include to get the SGI hash_map - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_map + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_HASH_SET_HEADER -

+

+ BOOST_HASH_SET_HEADER +

-

- The header to include to get the SGI hash_set - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_set + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_SLIST_HEADER -

+

+ BOOST_SLIST_HEADER +

-

- The header to include to get the SGI slist - class. This macro is only available if BOOST_HAS_SLIST - is defined. -

+

+ The header to include to get the SGI slist + class. This macro is only available if BOOST_HAS_SLIST + is defined. +

-

- BOOST_STD_EXTENSION_NAMESPACE -

+

+ BOOST_STD_EXTENSION_NAMESPACE +

-

- The namespace used for std library extensions (hashtable classes - etc). -

+

+ The namespace used for std library extensions (hashtable classes + etc). +

-

- BOOST_STATIC_CONSTANT(Type, assignment) -

+

+ BOOST_STATIC_CONSTANT(Type, assignment) +

-

- On compilers which don't allow in-class initialization of static - integral constant members, we must use enums as a workaround if we - want the constants to be available at compile-time. This macro gives - us a convenient way to declare such constants. For example instead - of: +

+ On compilers which don't allow in-class initialization of static + integral constant members, we must use enums as a workaround if + we want the constants to be available at compile-time. This macro + gives us a convenient way to declare such constants. For example + instead of:

struct foo{
    static const int value = 2;
 };
 

- use: + use:

struct foo{
    BOOST_STATIC_CONSTANT(int, value = 2);
 };
 

-

+

-

- BOOST_UNREACHABLE_RETURN(result) -

+

+ BOOST_UNREACHABLE_RETURN(result) +

-

- Normally evaluates to nothing, but evaluates to return x; if the - compiler requires a return, even when it can never be reached. -

+

+ Normally evaluates to nothing, but evaluates to return x; if the + compiler requires a return, even when it can never be reached. +

-

- BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) -

+

+ BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) +

-

- Some compilers silently "fold" different function template - instantiations if some of the template parameters don't appear in - the function parameter list. For instance: +

+ Some compilers silently "fold" different function template + instantiations if some of the template parameters don't appear + in the function parameter list. For instance:

#include <iostream>
 #include <ostream>
@@ -3062,10 +3047,10 @@
 }
 

- incorrectly outputs 2 2 double double on VC++ - 6. These macros, to be used in the function parameter list, fix the - problem without effects on the calling syntax. For instance, in the - case above write: + incorrectly outputs 2 2 double double on VC++ + 6. These macros, to be used in the function parameter list, fix + the problem without effects on the calling syntax. For instance, + in the case above write:

template <int n>
 void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
@@ -3074,105 +3059,105 @@
 void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
 

- Beware that they can declare (for affected compilers) a dummy defaulted - parameter, so they -

-

- a) should be always invoked at the end of the parameter list -

-

- b) can't be used if your function - template is multiply declared. -

-

- Furthermore, in order to add any needed comma separator, an APPEND_* - version must be used when the macro invocation appears after a normal - parameter declaration or after the invocation of another macro of - this same group. -

+ Beware that they can declare (for affected compilers) a dummy defaulted + parameter, so they +

+

+ a) should be always invoked at the end of the parameter list +

+

+ b) can't be used if your function + template is multiply declared. +

+

+ Furthermore, in order to add any needed comma separator, an APPEND_* + version must be used when the macro invocation appears after a + normal parameter declaration or after the invocation of another + macro of this same group. +

-

- BOOST_USE_FACET(Type, - loc) -

+

+ BOOST_USE_FACET(Type, loc) +

-

- When the standard library does not have a comforming std::use_facet there are various workarounds - available, but they differ from library to library. This macro provides - a consistent way to access a locale's facets. For example, replace: - std::use_facet<Type>(loc); - with: BOOST_USE_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_USE_FACET. -

+

+ When the standard library does not have a comforming std::use_facet there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to access a locale's facets. For example, + replace: std::use_facet<Type>(loc); + with: BOOST_USE_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_USE_FACET. +

-

- BOOST_HAS_FACET(Type, - loc) -

+

+ BOOST_HAS_FACET(Type, loc) +

-

- When the standard library does not have a comforming std::has_facet there are various workarounds - available, but they differ from library to library. This macro provides - a consistent way to check a locale's facets. For example, replace: - std::has_facet<Type>(loc); - with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_HAS_FACET. -

+

+ When the standard library does not have a comforming std::has_facet there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to check a locale's facets. For example, + replace: std::has_facet<Type>(loc); + with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_HAS_FACET. +

-

- BOOST_NESTED_TEMPLATE -

+

+ BOOST_NESTED_TEMPLATE +

-

- Member templates are supported by some compilers even though they - can't use the A::template member<U> syntax, as a workaround replace: - typedef typename - A::template rebind<U> binder; with: typedef - typename A::BOOST_NESTED_TEMPLATE - rebind<U> - binder; -

+

+ Member templates are supported by some compilers even though they + can't use the A::template + member<U> + syntax, as a workaround replace: typedef + typename A::template + rebind<U> + binder; + with: typedef typename + A::BOOST_NESTED_TEMPLATE rebind<U> binder; +

-

- BOOST_STRINGIZE(X) -

+

+ BOOST_STRINGIZE(X) +

-

- Converts the parameter X - to a string after macro replacement on X - has been performed. -

+

+ Converts the parameter X + to a string after macro replacement on X + has been performed. +

-

- BOOST_JOIN(X,Y) -

+

+ BOOST_JOIN(X,Y) +

-

- This piece of macro magic joins the two arguments together, even - when one of the arguments is itself a macro (see 16.3.1 in C++ standard). - This is normally used to create a mangled name in combination with - a predefined macro such a __LINE__. -

+

+ This piece of macro magic joins the two arguments together, even + when one of the arguments is itself a macro (see 16.3.1 in C++ + standard). This is normally used to create a mangled name in combination + with a predefined macro such a __LINE__. +

-

- Macro -

+

+ Macro +

-

- Header -

+

+ Header +

-

- Description -

+

+ Description +

-

- BOOST_VERSION -

+

+ BOOST_VERSION +

-

- <boost/version.hpp> -

+

+ <boost/version.hpp> +

-

- Describes the boost version number in XYYYZZ format such that: (BOOST_VERSION - % 100) is the sub-minor version, ((BOOST_VERSION - / 100) % 1000) - is the minor version, and (BOOST_VERSION / - 100000) - is the major version. -

+

+ Describes the boost version number in XYYYZZ format such that: + (BOOST_VERSION + % 100) is the sub-minor version, ((BOOST_VERSION + / 100) % 1000) + is the minor version, and (BOOST_VERSION / + 100000) + is the major version. +

-

- BOOST_NO_INT64_T -

+

+ BOOST_NO_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if there are no 64-bit integral types: int64_t, - uint64_t etc. -

+

+ Defined if there are no 64-bit integral types: int64_t, + uint64_t etc. +

-

- BOOST_NO_INTEGRAL_INT64_T -

+

+ BOOST_NO_INTEGRAL_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if int64_t - as defined by <boost/cstdint.hpp> is not usable in integral constant - expressions. -

+

+ Defined if int64_t + as defined by <boost/cstdint.hpp> + is not usable in integral constant expressions. +

-

- BOOST_MSVC -

+

+ BOOST_MSVC +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the compiler is really Microsoft Visual C++, as opposed - to one of the many other compilers that also define _MSC_VER. Has the same value as - _MSC_VER. -

+

+ Defined if the compiler is really Microsoft Visual C++, as opposed + to one of the many other compilers that also define _MSC_VER. Has the same value + as _MSC_VER. +

-

- BOOST_MSVC_FULL_VER -

+

+ BOOST_MSVC_FULL_VER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes - only has 8 digits), the macro has the form VVMMPPPPP where VV is - the major version number, MM is the minor version number, and PPPPP - is the compiler build number. -

+

+ Defined to a normalised 9 digit version of _MSC_FULL_VER (which + sometimes only has 8 digits), the macro has the form VVMMPPPPP + where VV is the major version number, MM is the minor version number, + and PPPPP is the compiler build number. +

-

- BOOST_INTEL -

+

+ BOOST_INTEL +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the compiler is an Intel compiler, takes the same value - as the compiler version macro. -

+

+ Defined if the compiler is an Intel compiler, takes the same value + as the compiler version macro. +

-

- BOOST_WINDOWS -

+

+ BOOST_CLANG +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the Windows platfrom API is available. -

+

+ Defined to 1 if the compiler is the Clang compiler. +

-

- BOOST_DINKUMWARE_STDLIB -

+

+ BOOST_WINDOWS +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the dinkumware standard library is in use, takes the same - value as the Dinkumware library version macro _CPPLIB_VER - if defined, otherwise 1. -

+

+ Defined if the Windows platfrom API is available. +

-

- BOOST_NO_WREGEX -

+

+ BOOST_DINKUMWARE_STDLIB +

-

- <boost/regex.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the regex library does not support wide character regular - expressions. -

+

+ Defined if the dinkumware standard library is in use, takes the + same value as the Dinkumware library version macro _CPPLIB_VER if defined, otherwise + 1. +

-

- BOOST_COMPILER -

+

+ BOOST_NO_WREGEX +

-

- <boost/config.hpp> -

+

+ <boost/regex.hpp> +

-

- Defined as a string describing the name and version number of the - compiler in use. Mainly for debugging the configuration. -

+

+ Defined if the regex library does not support wide character regular + expressions. +

-

- BOOST_STDLIB -

+

+ BOOST_COMPILER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name and version number of the - standard library in use. Mainly for debugging the configuration. -

+

+ Defined as a string describing the name and version number of the + compiler in use. Mainly for debugging the configuration. +

-

- BOOST_PLATFORM -

+

+ BOOST_STDLIB +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name of the platform. Mainly for - debugging the configuration. -

+

+ Defined as a string describing the name and version number of the + standard library in use. Mainly for debugging the configuration. +

+
+

+ BOOST_PLATFORM +

+
+

+ <boost/config.hpp> +

+
+

+ Defined as a string describing the name of the platform. Mainly + for debugging the configuration. +

-
+

The following macros and helper headers are of use to authors whose libraries - include separate source code, and are intended to address two issues: fixing - the ABI of the compiled library, and selecting which compiled library to - link against based upon the compilers settings. + include separate source code, and are intended to address several issues:

-
+
    +
  • + Controlling shared library symbol visibility +
  • +
  • + Fixing the ABI of the compiled library +
  • +
  • + Selecting which compiled library to link against based upon the compilers + settings +
  • +
+

+ See Guidelines + for Authors of Boost Libraries Containing Separate Source +

+
+ +

+ Some compilers support C++ extensions that control which symbols will be + exported from shared libraries such as dynamic shared objects (DSO's) on + Unix-like systems or dynamic-link libraries (DLL's) on Windows. +

+

+ The Microsoft VC++ compiler has long supplied __declspec(dllexport) and __declspec(dllimport) extensions for this purpose, as do virtually + all other compilers targeting the Windows platform. +

+

+ Modern versions of the GNU GCC compiler provide the __attribute__((visibility("default"))) extension to indicate that a symbol + should be exported. All other symbols may be hidden by using the -fvisibility-hidden + or -fvisibility-ms-compat compiler switches. +

+

+ Boost supplies several macros to make it easier to manage symbol visibility + in a way that is portable between compilers and operating systems. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Macro +

+
+

+ Description +

+
+

+ BOOST_SYMBOL_EXPORT +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be exported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

+
+

+ BOOST_SYMBOL_IMPORT +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be imported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

+
+

+ BOOST_SYMBOL_VISIBLE +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be globally visible. If the compiler has no such + extension, the macro is defined with no replacement text. Needed + for classes that are not otherwise exported, but are used by + RTTI. Examples include class for objects that will be thrown + as exceptions or used in dynamic_casts, across shared library + boundaries. For example, a header-only exception class might + look like this: +

+
class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
+
+

+ Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch + my_exception thrown from a shared library compiled by GCC with + the -fvisibility=hidden option. +

+
+

+ BOOST_HAS_DECLSPEC +

+
+

+ The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of + symbols from shared libraries. Deprecated. This macro + is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT + are now supplied. It is provided to support legacy code. +

+
+

+ Typical usage: +

+

+ boost/foo/config.hpp +

+
...
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
+# if defined(BOOST_FOO_SOURCE)
+#   define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
+# else 
+#   define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
+# endif
+#else
+# define BOOST_FOO_DECL
+#endif
+...
+
+

+ boost/foo/foo.hpp +

+
#include <boost/foo/config.hpp>
+...
+class BOOST_FOO_DECL bar { ... };
+...
+void BOOST_FOO_DECL f();
+...
+
+

+ boost/libs/foo/src/foo.cpp +

+
#define BOOST_FOO_SOURCE
+#include <boost/foo/foo.hpp>    
+...
+void BOOST_FOO_DECL f()
+{
+  ...
+}
+...
+
+
+

ABI Fixing @@ -3515,7 +3689,7 @@ to point to their own prefix/suffix headers if they so wish.

-
+

Automatic library selection @@ -3545,18 +3719,18 @@
BOOST_LIB_NAME

- Required: An identifier containing the basename of the library, for - example 'boost_regex'. -

+ Required: An identifier containing the basename of the library, for + example 'boost_regex'. +

BOOST_DYN_LINK

- Optional: when set link to dll rather than static library. -

+ Optional: when set link to dll rather than static library. +

BOOST_LIB_DIAGNOSTIC

- Optional: when set the header will print out the name of the library - selected (useful for debugging). -

+ Optional: when set the header will print out the name of the library + selected (useful for debugging). +

diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index d3acebf8..98d1302b 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+

Guidelines for Boost Authors @@ -61,14 +61,14 @@

Note that:

-
    -
  • +
      +
    • Boost library implementers are not required to "#include <boost/config.hpp>", and are not required in any way to support compilers that do not comply with the C++ Standard (ISO/IEC 14882).
    • -
    • +
    • If a library implementer wishes to support some non-conforming compiler, or to support some platform specific feature, "#include <boost/config.hpp>" @@ -76,12 +76,12 @@ the standard headers such as <climits>, etc.
    • -
    • +
    • If configuration information can be deduced from standard headers such as <climits>, use those standard headers rather than <boost/config.hpp>.
    • -
    • +
    • Boost files that use macros defined in <boost/config.hpp> should have sensible, standard conforming, default behavior if the macro is not defined. This means that the starting point for porting <boost/config.hpp> @@ -89,21 +89,21 @@ In the rare case where there is no sensible default behavior, an #error message should describe the problem.
    • -
    • +
    • If a Boost library implementer wants something added to config.hpp, post a request on the Boost mailing list. There is no guarantee such a request will be honored; the intent is to limit the complexity of config.hpp.
    • -
    • +
    • The intent is to support only compilers which appear on their way to becoming C++ Standard compliant, and only recent releases of those compilers at that.
    • -
    • +
    • The intent is not to disable mainstream features now well-supported by the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
    -
    +

    Disabling Compiler Warnings @@ -116,17 +116,17 @@

    Note that:

    -
      -
    • +
        +
      • This header should never be included by another Boost header, it should only ever be used by a library source file or a test case.
      • -
      • +
      • The header should be included before you include any other header.
      • -
      • +
      • This header only disables warnings that are hard or impossible to otherwise deal with, and which are typically emitted by one compiler only, or in one compilers own standard library headers. @@ -142,47 +142,47 @@

-

- Compiler -

+

+ Compiler +

-

- Warning -

+

+ Warning +

-

- Visual C++ 8 and later -

+

+ Visual C++ 8 and later +

-

- C4996: - Error 'function': was declared deprecated -

+

+ C4996: + Error 'function': was declared deprecated +

-

- Intel C++ -

+

+ Intel C++ +

-

- Warning 1786: relates to the use of "deprecated" standard - library functions rather like C4996 in Visual C++. -

+

+ Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++. +

-
+

Adding New Defect Macros @@ -233,14 +233,14 @@ Once the test code is in place in libs/config/test, updating the configuration test system proceeds as:

-
    -
  • +
      +
    • cd into libs/config/tools and run bjam. This generates the .cpp file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, config_test.cpp and config_info.cpp.

    • -
    • +
    • cd into libs/config/test/all and run bjam MACRONAME compiler-list, where MACRONAME is the name of the new macro, and @@ -251,7 +251,7 @@ If MACRONAME is defined when it should not be defined, xxx_fail_test will not report **passed**.

    • -
    • +
    • cd into libs/config/test and run bjam config_info config_test compiler-list. @@ -264,26 +264,26 @@

      Then you should:

      -
        -
      • +
          +
        • Define the defect macro in those config headers that require it.
        • -
        • +
        • Document the macro in this documentation (please do not forget this step!!)
        • -
        • +
        • Commit everything.
        • -
        • +
        • Keep an eye on the regression tests for new failures in Boost.Config caused by the addition.
        • -
        • +
        • Start using the macro.
      -
      +

      Adding New Feature Test Macros @@ -307,7 +307,7 @@ <unistd.h>).

      -
      +

      Modifying the Boost Configuration Headers diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 59a53ec9..68cd4396 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -22,7 +22,7 @@
      PrevUpHomeNext
      -
      +
      @@ -39,7 +39,7 @@ principles from the following article.

      -
      +
      @@ -102,7 +102,7 @@ code must be provided.

      -
      +
      diff --git a/doc/html/index.html b/doc/html/index.html index 08ed6fef..df39f221 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -18,7 +18,7 @@
      Next
      -
      +

      @@ -28,7 +28,7 @@

      -

      +

      Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

      @@ -92,7 +92,7 @@
      Acknowledgements

-
-
+

Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

-
+

The <boost/config.hpp> header @@ -168,7 +168,7 @@

-
+

Using the configure script @@ -213,63 +213,63 @@ -

- Variable -

+

+ Variable +

-

- Description -

+

+ Description +

-

- CXX -

+

+ CXX +

-

- The name of the compiler, for example c++. -

+

+ The name of the compiler, for example c++. +

-

- CXXFLAGS -

+

+ CXXFLAGS +

-

- The compiler flags to use, for example -O2. -

+

+ The compiler flags to use, for example -O2. +

-

- LDFLAGS -

+

+ LDFLAGS +

-

- The linker flags to use, for example -L/mypath. -

+

+ The linker flags to use, for example -L/mypath. +

-

- LIBS -

+

+ LIBS +

-

- Any libraries to link in, for example -lpthread. -

+

+ Any libraries to link in, for example -lpthread. +

@@ -295,15 +295,15 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

-
    -
  • +
      +
    • Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp provided by boost. This option allows only one configure-generated setup; boost developers should avoid this option, as it incurs the danger of accidentally committing a configure-modified <boost/config/user.hpp> to the cvs repository (something you will not be thanked for!).
    • -
    • +
    • Option 2: give the header a more memorable name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For example create a new sub-directory <boost-root>/boost/config/user/, and copy the header there; for example @@ -318,7 +318,7 @@

    -
    +

    User settable options @@ -337,352 +337,354 @@ -

    - Macro -

    +

    + Macro +

    -

    - Description -

    +

    + Description +

    -

    - BOOST_USER_CONFIG -

    +

    + BOOST_USER_CONFIG +

    -

    - When defined, it should point to the name of the user configuration - file to include prior to any boost configuration files. When not - defined, defaults to <boost/config/user.hpp>. -

    +

    + When defined, it should point to the name of the user configuration + file to include prior to any boost configuration files. When not + defined, defaults to <boost/config/user.hpp>. +

    -

    - BOOST_COMPILER_CONFIG -

    +

    + BOOST_COMPILER_CONFIG +

    -

    - When defined, it should point to the name of the compiler configuration - file to use. Defining this cuts out the compiler selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG - to <boost/config/compiler/gcc.hpp>. -

    +

    + When defined, it should point to the name of the compiler configuration + file to use. Defining this cuts out the compiler selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG + to <boost/config/compiler/gcc.hpp>. +

    -

    - BOOST_STDLIB_CONFIG -

    +

    + BOOST_STDLIB_CONFIG +

    -

    - When defined, it should point to the name of the standard library - configuration file to use. Defining this cuts out the standard library - selection logic, and eliminates the dependency on the header containing - that logic. For example if you are using STLport, then you could - define BOOST_STDLIB_CONFIG - to <boost/config/stdlib/stlport.hpp>. -

    +

    + When defined, it should point to the name of the standard library + configuration file to use. Defining this cuts out the standard + library selection logic, and eliminates the dependency on the header + containing that logic. For example if you are using STLport, then + you could define BOOST_STDLIB_CONFIG + to <boost/config/stdlib/stlport.hpp>. +

    -

    - BOOST_PLATFORM_CONFIG -

    +

    + BOOST_PLATFORM_CONFIG +

    -

    - When defined, it should point to the name of the platform configuration - file to use. Defining this cuts out the platform selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are compiling on linux, then you could define - BOOST_PLATFORM_CONFIG - to <boost/config/platform/linux.hpp>. -

    +

    + When defined, it should point to the name of the platform configuration + file to use. Defining this cuts out the platform selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are compiling on linux, then you could define + BOOST_PLATFORM_CONFIG + to <boost/config/platform/linux.hpp>. +

    -

    - BOOST_NO_COMPILER_CONFIG -

    +

    + BOOST_NO_COMPILER_CONFIG +

    -

    - When defined, no compiler configuration file is selected or included, - define when the compiler is fully conformant with the standard, or - where the user header (see BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

    +

    + When defined, no compiler configuration file is selected or included, + define when the compiler is fully conformant with the standard, + or where the user header (see BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

    -

    - BOOST_NO_STDLIB_CONFIG -

    +

    + BOOST_NO_STDLIB_CONFIG +

    -

    - When defined, no standard library configuration file is selected - or included, define when the standard library is fully conformant - with the standard, or where the user header (see BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

    +

    + When defined, no standard library configuration file is selected + or included, define when the standard library is fully conformant + with the standard, or where the user header (see BOOST_USER_CONFIG), has had any + options necessary added to it, for example by an autoconf generated + configure script. +

    -

    - BOOST_NO_PLATFORM_CONFIG -

    +

    + BOOST_NO_PLATFORM_CONFIG +

    -

    - When defined, no platform configuration file is selected or included, - define when the platform is fully conformant with the standard (and - has no useful extra features), or where the user header (see BOOST_USER_CONFIG), has had any - options necessary added to it, for example by an autoconf generated - configure script. -

    +

    + When defined, no platform configuration file is selected or included, + define when the platform is fully conformant with the standard + (and has no useful extra features), or where the user header (see + BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

    -

    - BOOST_NO_CONFIG -

    +

    + BOOST_NO_CONFIG +

    -

    - Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, - BOOST_NO_STDLIB_CONFIG - and BOOST_NO_PLATFORM_CONFIG. -

    +

    + Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, + BOOST_NO_STDLIB_CONFIG + and BOOST_NO_PLATFORM_CONFIG. +

    -

    - BOOST_STRICT_CONFIG -

    +

    + BOOST_STRICT_CONFIG +

    -

    - The normal behavior for compiler versions that are newer than the - last known version, is to assume that they have all the same defects - as the last known version. By setting this define, then compiler - versions that are newer than the last known version are assumed to - be fully conforming with the standard. This is probably most useful - for boost developers or testers, and for those who want to use boost - to test beta compiler versions. -

    +

    + The normal behavior for compiler versions that are newer than the + last known version, is to assume that they have all the same defects + as the last known version. By setting this define, then compiler + versions that are newer than the last known version are assumed + to be fully conforming with the standard. This is probably most + useful for boost developers or testers, and for those who want + to use boost to test beta compiler versions. +

    -

    - BOOST_ASSERT_CONFIG -

    +

    + BOOST_ASSERT_CONFIG +

    -

    - When this flag is set, if the config finds anything unknown, then - it will stop with a #error rather than continue. Boost regression - testers should set this define, as should anyone who wants to quickly - check whether boost is supported on their platform. -

    +

    + When this flag is set, if the config finds anything unknown, then + it will stop with a #error rather than continue. Boost regression + testers should set this define, as should anyone who wants to quickly + check whether boost is supported on their platform. +

    -

    - BOOST_DISABLE_THREADS -

    +

    + BOOST_DISABLE_THREADS +

    -

    - When defined, disables threading support, even if the compiler in - its current translation mode supports multiple threads. -

    +

    + When defined, disables threading support, even if the compiler + in its current translation mode supports multiple threads. +

    -

    - BOOST_DISABLE_WIN32 -

    +

    + BOOST_DISABLE_WIN32 +

    -

    - When defined, disables the use of Win32 specific API's, even when - these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless BOOST_HAS_PTHREADS is set. This - option may be set automatically by the config system when it detects - that the compiler is in "strict mode". -

    +

    + When defined, disables the use of Win32 specific API's, even when + these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless + BOOST_HAS_PTHREADS + is set. This option may be set automatically by the config system + when it detects that the compiler is in "strict mode". +

    -

    - BOOST_DISABLE_ABI_HEADERS -

    +

    + BOOST_DISABLE_ABI_HEADERS +

    -

    - Stops boost headers from including any prefix/suffix headers that - normally control things like struct packing and alignment. -

    +

    + Stops boost headers from including any prefix/suffix headers that + normally control things like struct packing and alignment. +

    -

    - BOOST_ABI_PREFIX -

    +

    + BOOST_ABI_PREFIX +

    -

    - A prefix header to include in place of whatever boost.config would - normally select, any replacement should set up struct packing and - alignment options as required. -

    +

    + A prefix header to include in place of whatever boost.config would + normally select, any replacement should set up struct packing and + alignment options as required. +

    -

    - BOOST_ABI_SUFFIX -

    +

    + BOOST_ABI_SUFFIX +

    -

    - A suffix header to include in place of whatever boost.config would - normally select, any replacement should undo the effects of the prefix - header. -

    +

    + A suffix header to include in place of whatever boost.config would + normally select, any replacement should undo the effects of the + prefix header. +

    -

    - BOOST_ALL_DYN_LINK -

    +

    + BOOST_ALL_DYN_LINK +

    -

    - Forces all libraries that have separate source, to be linked as dll's - rather than static libraries on Microsoft Windows (this macro is - used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may only - be dynamically linked (Boost.Threads for example), in these cases - this macro has no effect. -

    +

    + Forces all libraries that have separate source, to be linked as + dll's rather than static libraries on Microsoft Windows (this macro + is used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro has no effect. +

    -

    - BOOST_WHATEVER_DYN_LINK -

    +

    + BOOST_WHATEVER_DYN_LINK +

    -

    - Forces library "whatever" to be linked as a dll rather - than a static library on Microsoft Windows: replace the WHATEVER - part of the macro name with the name of the library that you want - to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK - or BOOST_REGEX_DYN_LINK - etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may only - be dynamically linked (Boost.Threads for example), in these cases - this macro is unsupported. -

    +

    + Forces library "whatever" to be linked as a dll rather + than a static library on Microsoft Windows: replace the WHATEVER + part of the macro name with the name of the library that you want + to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK + or BOOST_REGEX_DYN_LINK + etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro is unsupported. +

    -

    - BOOST_ALL_NO_LIB -

    +

    + BOOST_ALL_NO_LIB +

    -

    - Tells the config system not to automatically select which libraries - to link against. Normally if a compiler supports #pragma lib, then - the correct library build variant will be automatically selected - and linked against, simply by the act of including one of that library's - headers. This macro turns that feature off. -

    +

    + Tells the config system not to automatically select which libraries + to link against. Normally if a compiler supports #pragma lib, then + the correct library build variant will be automatically selected + and linked against, simply by the act of including one of that + library's headers. This macro turns that feature off. +

    -

    - BOOST_WHATEVER_NO_LIB -

    +

    + BOOST_WHATEVER_NO_LIB +

    -

    - Tells the config system not to automatically select which library - to link against for library "whatever", replace WHATEVER - in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally if - a compiler supports #pragma - lib, then the correct library - build variant will be automatically selected and linked against, - simply by the act of including one of that library's headers. This - macro turns that feature off. -

    +

    + Tells the config system not to automatically select which library + to link against for library "whatever", replace WHATEVER + in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally + if a compiler supports #pragma + lib, then the correct + library build variant will be automatically selected and linked + against, simply by the act of including one of that library's headers. + This macro turns that feature off. +

    -

    - BOOST_LIB_DIAGNOSTIC -

    +

    + BOOST_LIB_DIAGNOSTIC +

    -

    - Causes the auto-linking code to output diagnostic messages indicating - the name of the library that is selected for linking. -

    +

    + Causes the auto-linking code to output diagnostic messages indicating + the name of the library that is selected for linking. +

    -

    - BOOST_LIB_TOOLSET -

    +

    + BOOST_LIB_TOOLSET +

    -

    - Overrides the name of the toolset part of the name of library being - linked to; note if defined this must be defined to a quoted string - literal, for example "abc". -

    +

    + Overrides the name of the toolset part of the name of library being + linked to; note if defined this must be defined to a quoted string + literal, for example "abc". +

    -
    +

    Advanced configuration usage @@ -726,7 +728,7 @@

    The following usage examples represent just a few of the possibilities:

    -
    +

    Example 1, creating our own frozen configuration @@ -758,7 +760,7 @@ yet supported by boost.

    -
    +

    Example 2: skipping files that you don't need @@ -777,7 +779,7 @@ a dependency on two boost headers.

    -
    +
    -
    +

    Testing the boost configuration @@ -808,119 +810,119 @@ -

    - File -

    +

    + File +

    -

    - Description -

    +

    + Description +

    -

    - config_info.cpp -

    +

    + config_info.cpp +

    -

    - Prints out a detailed description of your compiler/standard library/platform - setup, plus your current boost configuration. The information provided - by this program useful in setting up the boost configuration files. - If you report that boost is incorrectly configured for your compiler/library/platform - then please include the output from this program when reporting the - changes required. -

    +

    + Prints out a detailed description of your compiler/standard library/platform + setup, plus your current boost configuration. The information provided + by this program useful in setting up the boost configuration files. + If you report that boost is incorrectly configured for your compiler/library/platform + then please include the output from this program when reporting + the changes required. +

    -

    - config_test.cpp -

    +

    + config_test.cpp +

    -

    - A monolithic test program that includes most of the individual test - cases. This provides a quick check to see if boost is correctly configured - for your compiler/library/platform. -

    +

    + A monolithic test program that includes most of the individual + test cases. This provides a quick check to see if boost is correctly + configured for your compiler/library/platform. +

    -

    - limits_test.cpp -

    +

    + limits_test.cpp +

    -

    - Tests your standard library's std::numeric_limits - implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). This - test file fails with most versions of numeric_limits, mainly due - to the way that some compilers treat NAN's and infinity. -

    +

    + Tests your standard library's std::numeric_limits + implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). + This test file fails with most versions of numeric_limits, mainly + due to the way that some compilers treat NAN's and infinity. +

    -

    - no_*pass.cpp -

    +

    + no_*pass.cpp +

    -

    - Individual compiler defect test files. Each of these should compile, - if one does not then the corresponding BOOST_NO_XXX - macro needs to be defined - see each test file for specific details. -

    +

    + Individual compiler defect test files. Each of these should compile, + if one does not then the corresponding BOOST_NO_XXX + macro needs to be defined - see each test file for specific details. +

    -

    - no_*fail.cpp -

    +

    + no_*fail.cpp +

    -

    - Individual compiler defect test files. Each of these should not compile, - if one does then the corresponding BOOST_NO_XXX - macro is defined when it need not be - see each test file for specific - details. -

    +

    + Individual compiler defect test files. Each of these should not + compile, if one does then the corresponding BOOST_NO_XXX + macro is defined when it need not be - see each test file for specific + details. +

    -

    - has_*pass.cpp -

    +

    + has_*pass.cpp +

    -

    - Individual feature test files. If one of these does not compile then - the corresponding BOOST_HAS_XXX - macro is defined when it should not be - see each test file for specific - details. -

    +

    + Individual feature test files. If one of these does not compile + then the corresponding BOOST_HAS_XXX + macro is defined when it should not be - see each test file for + specific details. +

    -

    - has_*fail.cpp -

    +

    + has_*fail.cpp +

    -

    - Individual feature test files. If one of these does compile then - the corresponding BOOST_HAS_XXX - macro can be safely defined - see each test file for specific details. -

    +

    + Individual feature test files. If one of these does compile then + the corresponding BOOST_HAS_XXX + macro can be safely defined - see each test file for specific details. +

    @@ -960,7 +962,7 @@

    - +

    Last revised: April 09, 2010 at 12:33:49 GMT

    Last revised: May 22, 2010 at 12:50:36 GMT


    From 5b72dbb8565fa382ea4f2c577c36587bcf5a2e67 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 22 May 2010 22:27:27 +0000 Subject: [PATCH 186/435] Added BOOST_NO_COMPLETE_VALUE_INITIALIZATION to Intel C++ <= 11.1 (trunk), see #4080. [SVN r62159] --- include/boost/config/compiler/intel.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 531242e9..cedca29e 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -157,6 +157,19 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif +// +// An attempt to value-initialize a pointer-to-member may trigger an +// internal error on Intel <= 11.1 (last checked version), as was +// reported by John Maddock, Intel support issue 589832, May 2010. +// Moreover, according to test results from Huang-Vista-x86_32_intel, +// intel-vc9-win-11.1 may leave a non-POD array uninitialized. +// (Niels Dekker, LKEB, May 2010) +#if defined(__INTEL_COMPILER) +# if __INTEL_COMPILER <= 1110 +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# endif +#endif + // // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1110) From ab638ef45dc06dd44f9121a8c32250eb48e622d8 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 22 May 2010 22:37:11 +0000 Subject: [PATCH 187/435] Added some more comment to [62159] [SVN r62160] --- include/boost/config/compiler/intel.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index cedca29e..1af092fe 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -162,7 +162,8 @@ template<> struct assert_intrinsic_wchar_t {}; // internal error on Intel <= 11.1 (last checked version), as was // reported by John Maddock, Intel support issue 589832, May 2010. // Moreover, according to test results from Huang-Vista-x86_32_intel, -// intel-vc9-win-11.1 may leave a non-POD array uninitialized. +// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some +// cases when it should be value-initialized. // (Niels Dekker, LKEB, May 2010) #if defined(__INTEL_COMPILER) # if __INTEL_COMPILER <= 1110 From 40a0eeeef0be7e92ea691bee0649da437e695da1 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sat, 22 May 2010 22:48:13 +0000 Subject: [PATCH 188/435] Removed temporary code, skipping value-initialization of pointer-to-member objects for Intel <= 11.1. [SVN r62161] --- test/boost_no_com_value_init.ipp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index 699ccd23..a10cf8fe 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -517,17 +517,6 @@ namespace boost_no_complete_value_initialization // the function above here. #define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value) -// TODO Niels Dekker, May 17, 2010: The following code is meant to be very tentative (trunk only). -// It should be removed later this month, and is certainly not meant to become part of the release branch!!! -#ifdef __INTEL_COMPILER - #if __INTEL_COMPILER <= 1110 - // The following macro indicates that initialization of ptr_to_member must be skipped. - // Such an initialization triggered an internal error (assertion failed at: "shared/edgglue/edg_expr.c", - // line 2859) on Intel <= 11.1 (Intel support issue 589832, reported by John Maddock, May 2010). - #define BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER - #endif -#endif - // value_initializer initializes each of its data members by means // of an empty set of parentheses, and allows checking whether @@ -771,9 +760,7 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + -#ifdef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER - ( (std::cout << "Note: Skipped ptr_to_member checks\n"), 1) + -#else +#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + @@ -1028,7 +1015,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 30." + << "\nDetected by boost_no_complete_value_initialization::test() revision 31." << std::endl; } return static_cast(total_num_failures); From 5425bedbb4285f1f9169ba7494f850ecf3b3cad5 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 25 May 2010 14:38:34 +0000 Subject: [PATCH 189/435] Add symbol visibility support to Intel and Sun compilers. [SVN r62199] --- include/boost/config/compiler/intel.hpp | 9 +++++++++ include/boost/config/compiler/sunpro_cc.hpp | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 1af092fe..e7bc95ba 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -171,6 +171,15 @@ template<> struct assert_intrinsic_wchar_t {}; # endif #endif +// +// Dynamic shared object (DSO) and dynamic-link library (DLL) support +// +#if defined(__GNUC__) && (__GNUC__ >= 4) +# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default"))) +# define BOOST_SYMBOL_IMPORT +# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) +#endif + // // last known and checked version: #if (BOOST_INTEL_CXX_VERSION > 1110) diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 8f8d7886..aca49fa0 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -77,6 +77,15 @@ # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION # endif +// +// Dynamic shared object (DSO) and dynamic-link library (DLL) support +// +#if __SUNPRO_CC > 0x500 +# define BOOST_SYMBOL_EXPORT __global +# define BOOST_SYMBOL_IMPORT __global +# define BOOST_SYMBOL_VISIBLE __global +#endif + // From 2b40995d164817476db0c3e0dd64092f02a9f112 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 May 2010 08:49:52 +0000 Subject: [PATCH 190/435] Try and make BOOST_NO_EXTERN_TEMPLATES clearer. [SVN r62257] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 3728 ++++++++--------- .../guidelines_for_boost_authors.html | 96 +- doc/html/boost_config/rationale.html | 8 +- doc/html/index.html | 654 ++- doc/macro_reference.qbk | 3 +- 6 files changed, 2244 insertions(+), 2249 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index d49dfa64..347924f4 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
    PrevUpHome
    -
    +
    diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index c5c0d793..ecf1cccc 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
    PrevUpHomeNext
    -
    +
    @@ -44,7 +44,7 @@

-
+

Macros that describe defects @@ -62,240 +62,240 @@ -

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -

+

+ BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +

-

- Compiler -

+

+ Compiler +

-

- The compiler exibits certain partial specialisation bug - probably - Borland C++ Builder specific. -

+

+ The compiler exibits certain partial specialisation bug - probably + Borland C++ Builder specific. +

-

- BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -

+

+ BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +

-

- Compiler -

+

+ Compiler +

-

- Argument dependent lookup fails if there is a using declaration - for the symbol being looked up in the current scope. For example, - using boost::get_pointer; prevents ADL from - finding overloads of get_pointer - in namespaces nested inside boost (but not elsewhere). Probably - Borland specific. -

+

+ Argument dependent lookup fails if there is a using declaration for + the symbol being looked up in the current scope. For example, using + boost::get_pointer; prevents ADL from + finding overloads of get_pointer + in namespaces nested inside boost (but not elsewhere). Probably Borland + specific. +

-

- BOOST_NO_ADL_BARRIER -

+

+ BOOST_NO_ADL_BARRIER +

-

- Compiler -

+

+ Compiler +

-

- The compiler locates and searches namespaces that it should *not* - in fact search when performing argument dependent lookup. -

+

+ The compiler locates and searches namespaces that it should *not* + in fact search when performing argument dependent lookup. +

-

- BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -

+

+ BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +

-

- Compiler -

+

+ Compiler +

-

- Compiler does not implement argument-dependent lookup (also named - Koenig lookup); see std::3.4.2 [basic.koenig.lookup] -

+

+ Compiler does not implement argument-dependent lookup (also named + Koenig lookup); see std::3.4.2 [basic.koenig.lookup] +

-

- BOOST_NO_AUTO_PTR -

+

+ BOOST_NO_AUTO_PTR +

-

- Standard library -

+

+ Standard library +

-

- If the compiler / library supplies non-standard or broken std::auto_ptr. -

+

+ If the compiler / library supplies non-standard or broken std::auto_ptr. +

-

- BOOST_NO_COMPLETE_VALUE_INITIALIZATION -

+

+ BOOST_NO_COMPLETE_VALUE_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler has not completely implemented value-initialization. See - also The - Utility/Value Init docs -

+

+ Compiler has not completely implemented value-initialization. See + also The + Utility/Value Init docs +

-

- BOOST_NO_CTYPE_FUNCTIONS -

+

+ BOOST_NO_CTYPE_FUNCTIONS +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide functions for the character-classifying - operations <ctype.h> and <cctype>, - only macros. -

+

+ The Platform does not provide functions for the character-classifying + operations <ctype.h> and <cctype>, + only macros. +

-

- BOOST_NO_CV_SPECIALIZATIONS -

+

+ BOOST_NO_CV_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-qualified types conflict with - a specialisation for a cv-unqualififed type. -

+

+ If template specialisations for cv-qualified types conflict with + a specialisation for a cv-unqualififed type. +

-

- BOOST_NO_CV_VOID_SPECIALIZATIONS -

+

+ BOOST_NO_CV_VOID_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-void types conflict with a specialisation - for void. -

+

+ If template specialisations for cv-void types conflict with a specialisation + for void. +

-

- BOOST_NO_CWCHAR -

+

+ BOOST_NO_CWCHAR +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wchar.h> - and <cwchar>. -

+

+ The Platform does not provide <wchar.h> + and <cwchar>. +

-

- BOOST_NO_CWCTYPE -

+

+ BOOST_NO_CWCTYPE +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wctype.h> - and <cwctype>. -

+

+ The Platform does not provide <wctype.h> + and <cwctype>. +

-

- BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -

+

+ BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler fails to compile a nested class that has a dependent - base class: +

+ The compiler fails to compile a nested class that has a dependent + base class:

template<typename T>
 struct foo : {
@@ -303,106 +303,106 @@
    struct bar : public U {};
 

- }; -

+ }; +

-

- BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -

+

+ BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Template value parameters cannot have a dependent type, for example: - +

+ Template value parameters cannot have a dependent type, for example: +

template<class T, typename T::type value> 
 class X { ... };
 

-

+

-

- BOOST_NO_EXCEPTION_STD_NAMESPACE -

+

+ BOOST_NO_EXCEPTION_STD_NAMESPACE +

-

- Standard Library -

+

+ Standard Library +

-

- The standard library does not put some or all of the contents of - <exception> in namespace std. -

+

+ The standard library does not put some or all of the contents of + <exception> in namespace std. +

-

- BOOST_NO_EXCEPTIONS -

+

+ BOOST_NO_EXCEPTIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support exception handling (this setting - is typically required by many C++ compilers for embedded platforms). - Note that there is no requirement for boost libraries to honor - this configuration setting - indeed doing so may be impossible - in some cases. Those libraries that do honor this will typically - abort if a critical error occurs - you have been warned! -

+

+ The compiler does not support exception handling (this setting is + typically required by many C++ compilers for embedded platforms). + Note that there is no requirement for boost libraries to honor this + configuration setting - indeed doing so may be impossible in some + cases. Those libraries that do honor this will typically abort if + a critical error occurs - you have been warned! +

-

- BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -

+

+ BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +

-

- Compiler -

+

+ Compiler +

-

- Can only use deduced template arguments when calling function template - instantiations. -

+

+ Can only use deduced template arguments when calling function template + instantiations. +

-

- BOOST_NO_FUNCTION_TEMPLATE_ORDERING -

+

+ BOOST_NO_FUNCTION_TEMPLATE_ORDERING +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not perform function template ordering or its - function template ordering is incorrect. +

+ The compiler does not perform function template ordering or its function + template ordering is incorrect.

// #1
 template<class T> void f(T);
@@ -415,875 +415,876 @@
 f(&bar); // should choose #2.
 

-

+

-

- BOOST_NO_INCLASS_MEMBER_INITIALIZATION -

+

+ BOOST_NO_INCLASS_MEMBER_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler violates std::9.4.2/4. -

+

+ Compiler violates std::9.4.2/4. +

-

- BOOST_NO_INTRINSIC_WCHAR_T -

+

+ BOOST_NO_INTRINSIC_WCHAR_T +

-

- Compiler -

+

+ Compiler +

-

- The C++ implementation does not provide wchar_t, - or it is really a synonym for another integral type. Use this symbol - to decide whether it is appropriate to explicitly specialize a - template on wchar_t - if there is already a specialization for other integer types. -

+

+ The C++ implementation does not provide wchar_t, + or it is really a synonym for another integral type. Use this symbol + to decide whether it is appropriate to explicitly specialize a template + on wchar_t if there + is already a specialization for other integer types. +

-

- BOOST_NO_IOSFWD -

+

+ BOOST_NO_IOSFWD +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iosfwd>. -

+

+ The standard library lacks <iosfwd>. +

-

- BOOST_NO_IOSTREAM -

+

+ BOOST_NO_IOSTREAM +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iostream>, - <istream> or <ostream>. -

+

+ The standard library lacks <iostream>, + <istream> or <ostream>. +

-

- BOOST_NO_IS_ABSTRACT -

+

+ BOOST_NO_IS_ABSTRACT +

-

- Compiler -

+

+ Compiler +

-

- The C++ compiler does not support SFINAE with abstract types, this - is covered by Core - Language DR337, but is not part of the current standard. - Fortunately most compilers that support SFINAE also support this - DR. -

+

+ The C++ compiler does not support SFINAE with abstract types, this + is covered by Core + Language DR337, but is not part of the current standard. + Fortunately most compilers that support SFINAE also support this + DR. +

-

- BOOST_NO_LIMITS -

+

+ BOOST_NO_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation does not provide the <limits> - header. Never check for this symbol in library code; always include - <boost/limits.hpp>, which guarantees to provide - std::numeric_limits. -

+

+ The C++ implementation does not provide the <limits> + header. Never check for this symbol in library code; always include + <boost/limits.hpp>, which guarantees to provide + std::numeric_limits. +

-

- BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -

+

+ BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +

-

- Standard library -

+

+ Standard library +

-

- Constants such as numeric_limits<T>::is_signed - are not available for use at compile-time. -

+

+ Constants such as numeric_limits<T>::is_signed + are not available for use at compile-time. +

-

- BOOST_NO_LONG_LONG_NUMERIC_LIMITS -

+

+ BOOST_NO_LONG_LONG_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There is no specialization for numeric_limits<long - long> - and numeric_limits<unsigned - long long>. <boost/limits.hpp> - will then add these specializations as a standard library "fix" - only if the compiler supports the long - long datatype. -

+

+ There is no specialization for numeric_limits<long + long> + and numeric_limits<unsigned + long long>. <boost/limits.hpp> + will then add these specializations as a standard library "fix" + only if the compiler supports the long + long datatype. +

-

- BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -

+

+ BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the specialization of individual - member functions of template classes. -

+

+ The compiler does not support the specialization of individual member + functions of template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_KEYWORD -

+

+ BOOST_NO_MEMBER_TEMPLATE_KEYWORD +

-

- Compiler -

+

+ Compiler +

-

- If the compiler supports member templates, but not the template - keyword when accessing member template classes. -

+

+ If the compiler supports member templates, but not the template keyword + when accessing member template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_FRIENDS -

+

+ BOOST_NO_MEMBER_TEMPLATE_FRIENDS +

-

- Compiler -

+

+ Compiler +

-

- Member template friend syntax (template<class - P> - friend class - frd;) - described in the C++ Standard, 14.5.3, not supported. -

+

+ Member template friend syntax (template<class + P> + friend class + frd;) + described in the C++ Standard, 14.5.3, not supported. +

-

- BOOST_NO_MEMBER_TEMPLATES -

+

+ BOOST_NO_MEMBER_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- Member template functions not fully supported. -

+

+ Member template functions not fully supported. +

-

- BOOST_NO_MS_INT64_NUMERIC_LIMITS -

+

+ BOOST_NO_MS_INT64_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned - __int64>. - <boost/limits.hpp> will then add these specializations - as a standard library "fix", only if the compiler supports - the __int64 datatype. -

+

+ There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned + __int64>. + <boost/limits.hpp> will then add these specializations + as a standard library "fix", only if the compiler supports + the __int64 datatype. +

-

- BOOST_NO_NESTED_FRIENDSHIP -

+

+ BOOST_NO_NESTED_FRIENDSHIP +

-

- Compiler -

+

+ Compiler +

-

- Compiler doesn't allow a nested class to access private members - of its containing class. Probably Borland/CodeGear specific. -

+

+ Compiler doesn't allow a nested class to access private members of + its containing class. Probably Borland/CodeGear specific. +

-

- BOOST_NO_OPERATORS_IN_NAMESPACE -

+

+ BOOST_NO_OPERATORS_IN_NAMESPACE +

-

- Compiler -

+

+ Compiler +

-

- Compiler requires inherited operator friend functions to be defined - at namespace scope, then using'ed to boost. Probably GCC specific. - See <boost/operators.hpp> for example. -

+

+ Compiler requires inherited operator friend functions to be defined + at namespace scope, then using'ed to boost. Probably GCC specific. + See <boost/operators.hpp> + for example. +

-

- BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS -

+

+ BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle partial specializations - which depend upon default arguments in the primary template. -

+

+ The compiler does not correctly handle partial specializations which + depend upon default arguments in the primary template. +

-

- BOOST_NO_POINTER_TO_MEMBER_CONST -

+

+ BOOST_NO_POINTER_TO_MEMBER_CONST +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle pointers to const member - functions, preventing use of these in overloaded function templates. - See <boost/functional.hpp> for example. -

+

+ The compiler does not correctly handle pointers to const member functions, + preventing use of these in overloaded function templates. See <boost/functional.hpp> + for example. +

-

- BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -

+

+ BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Pointers to members don't work when used as template parameters. -

+

+ Pointers to members don't work when used as template parameters. +

-

- BOOST_NO_PRIVATE_IN_AGGREGATE -

+

+ BOOST_NO_PRIVATE_IN_AGGREGATE +

-

- Compiler -

+

+ Compiler +

-

- The compiler misreads 8.5.1, treating classes as non-aggregate - if they contain private or protected member functions. -

+

+ The compiler misreads 8.5.1, treating classes as non-aggregate if + they contain private or protected member functions. +

-

- BOOST_NO_RTTI -

+

+ BOOST_NO_RTTI +

-

- Compiler -

+

+ Compiler +

-

- The compiler may (or may not) have the typeid operator, but RTTI - on the dynamic type of an object is not supported. -

+

+ The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. +

-

- BOOST_NO_SFINAE -

+

+ BOOST_NO_SFINAE +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the "Substitution Failure Is - Not An Error" meta-programming idiom. -

+

+ The compiler does not support the "Substitution Failure Is Not + An Error" meta-programming idiom. +

-

- BOOST_NO_SFINAE_EXPR -

+

+ BOOST_NO_SFINAE_EXPR +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support usage of SFINAE with arbitrary expressions. -

+

+ The compiler does not support usage of SFINAE with arbitrary expressions. +

-

- BOOST_NO_STD_ALLOCATOR -

+

+ BOOST_NO_STD_ALLOCATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide a standards conforming - std::allocator. -

+

+ The C++ standard library does not provide a standards conforming + std::allocator. +

-

- BOOST_NO_STD_DISTANCE -

+

+ BOOST_NO_STD_DISTANCE +

-

- Standard library -

+

+ Standard library +

-

- The platform does not have a conforming version of std::distance. -

+

+ The platform does not have a conforming version of std::distance. +

-

- BOOST_NO_STD_ITERATOR -

+

+ BOOST_NO_STD_ITERATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation fails to provide the std::iterator - class. -

+

+ The C++ implementation fails to provide the std::iterator + class. +

-

- BOOST_NO_STD_ITERATOR_TRAITS -

+

+ BOOST_NO_STD_ITERATOR_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The compiler does not provide a standard compliant implementation - of std::iterator_traits. Note that the - compiler may still have a non-standard implementation. -

+

+ The compiler does not provide a standard compliant implementation + of std::iterator_traits. Note that the + compiler may still have a non-standard implementation. +

-

- BOOST_NO_STD_LOCALE -

+

+ BOOST_NO_STD_LOCALE +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::locale. -

+

+ The standard library lacks std::locale. +

-

- BOOST_NO_STD_MESSAGES -

+

+ BOOST_NO_STD_MESSAGES +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::messages - facet. -

+

+ The standard library lacks a conforming std::messages + facet. +

-

- BOOST_NO_STD_MIN_MAX -

+

+ BOOST_NO_STD_MIN_MAX +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide the min() and max() template functions that should - be in <algorithm>. -

+

+ The C++ standard library does not provide the min() and max() template functions that should + be in <algorithm>. +

-

- BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -

+

+ BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +

-

- Standard library -

+

+ Standard library +

-

- Defined if the standard library's output iterators are not assignable. -

+

+ Defined if the standard library's output iterators are not assignable. +

-

- BOOST_NO_STD_TYPEINFO -

+

+ BOOST_NO_STD_TYPEINFO +

-

- Standard library -

+

+ Standard library +

-

- The <typeinfo> header declares type_info - in the global namespace instead of namespace std. -

+

+ The <typeinfo> header declares type_info + in the global namespace instead of namespace std. +

-

- BOOST_NO_STD_USE_FACET -

+

+ BOOST_NO_STD_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet. -

+

+ The standard library lacks a conforming std::use_facet. +

-

- BOOST_NO_STD_WSTREAMBUF -

+

+ BOOST_NO_STD_WSTREAMBUF +

-

- Standard library -

+

+ Standard library +

-

- The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, - or buggy. -

+

+ The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, + or buggy. +

-

- BOOST_NO_STD_WSTRING -

+

+ BOOST_NO_STD_WSTRING +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::wstring. -

+

+ The standard library lacks std::wstring. +

-

- BOOST_NO_STDC_NAMESPACE -

+

+ BOOST_NO_STDC_NAMESPACE +

-

- Compiler, Platform -

+

+ Compiler, Platform +

-

- The contents of C++ standard headers for C library functions (the - <c...> headers) have not been placed - in namespace std. This test is difficult - some libraries "fake" - the std C functions by adding using declarations to import them - into namespace std, unfortunately they don't necessarily catch - all of them... -

+

+ The contents of C++ standard headers for C library functions (the + <c...> headers) have not been placed + in namespace std. This test is difficult - some libraries "fake" + the std C functions by adding using declarations to import them into + namespace std, unfortunately they don't necessarily catch all of + them... +

-

- BOOST_NO_STRINGSTREAM -

+

+ BOOST_NO_STRINGSTREAM +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation does not provide the <sstream> - header. -

+

+ The C++ implementation does not provide the <sstream> + header. +

-

- BOOST_NO_SWPRINTF -

+

+ BOOST_NO_SWPRINTF +

-

- Platform -

+

+ Platform +

-

- The platform does not have a conforming version of swprintf. -

+

+ The platform does not have a conforming version of swprintf. +

-

- BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -

+

+ BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Class template partial specialization (14.5.4 [temp.class.spec]) - not supported. -

+

+ Class template partial specialization (14.5.4 [temp.class.spec]) + not supported. +

-

- BOOST_NO_TEMPLATED_IOSTREAMS -

+

+ BOOST_NO_TEMPLATED_IOSTREAMS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iostream classes. -

+

+ The standard library does not provide templated iostream classes. +

-

- BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -

+

+ BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iterator constructors - for its containers. -

+

+ The standard library does not provide templated iterator constructors + for its containers. +

-

- BOOST_NO_TEMPLATE_TEMPLATES -

+

+ BOOST_NO_TEMPLATE_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support template template parameters. -

+

+ The compiler does not support template template parameters. +

-

- BOOST_NO_TYPEID -

+

+ BOOST_NO_TYPEID +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the typeid operator at all. -

+

+ The compiler does not support the typeid operator at all. +

-

- BOOST_NO_TYPENAME_WITH_CTOR -

+

+ BOOST_NO_TYPENAME_WITH_CTOR +

-

- Compiler -

+

+ Compiler +

-

- The typename keyword cannot be used when creating a temporary of - a Dependent type. -

+

+ The typename keyword cannot be used when creating a temporary of + a Dependent type. +

-

- BOOST_NO_UNREACHABLE_RETURN_DETECTION -

+

+ BOOST_NO_UNREACHABLE_RETURN_DETECTION +

-

- Compiler -

+

+ Compiler +

-

- If a return is unreachable, then no return statement should be - required, however some compilers insist on it, while other issue - a bunch of warnings if it is in fact present. -

+

+ If a return is unreachable, then no return statement should be required, + however some compilers insist on it, while other issue a bunch of + warnings if it is in fact present. +

-

- BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -

+

+ BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +

-

- Compiler -

+

+ Compiler +

-

- The compiler will not accept a using declaration that brings a - function from a typename used as a base class into a derived class - if functions of the same name are present in the derived class. -

+

+ The compiler will not accept a using declaration that brings a function + from a typename used as a base class into a derived class if functions + of the same name are present in the derived class. +

-

- BOOST_NO_USING_TEMPLATE -

+

+ BOOST_NO_USING_TEMPLATE +

-

- Compiler -

+

+ Compiler +

-

- The compiler will not accept a using declaration that imports a - template class or function from another namespace. Originally a - Borland specific problem with imports to/from the global namespace, - extended to MSVC6 which has a specific issue with importing template - classes (but not functions). -

+

+ The compiler will not accept a using declaration that imports a template + class or function from another namespace. Originally a Borland specific + problem with imports to/from the global namespace, extended to MSVC6 + which has a specific issue with importing template classes (but not + functions). +

-

- BOOST_NO_VOID_RETURNS -

+

+ BOOST_NO_VOID_RETURNS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not allow a void function to return the result - of calling another void function. +

+ The compiler does not allow a void function to return the result + of calling another void function.

void f() {}
 void g() { return f(); }
 

-

+

@@ -1291,7 +1292,7 @@

-
+

Macros that describe optional features @@ -1308,882 +1309,881 @@ -

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_HAS_BETHREADS -

+

+ BOOST_HAS_BETHREADS +

-

- Platform -

+

+ Platform +

-

- The platform supports BeOS style threads. -

+

+ The platform supports BeOS style threads. +

-

- BOOST_HAS_CLOCK_GETTIME -

+

+ BOOST_HAS_CLOCK_GETTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API clock_gettime. -

+

+ The platform has the POSIX API clock_gettime. +

-

- BOOST_HAS_DIRENT_H -

+

+ BOOST_HAS_DIRENT_H +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX header <dirent.h>. -

+

+ The platform has the POSIX header <dirent.h>. +

-

- BOOST_HAS_EXPM1 -

+

+ BOOST_HAS_EXPM1 +

-

- Platform -

+

+ Platform +

-

- The platform has the functions expm1, - expm1f and expm1l in <math.h> -

+

+ The platform has the functions expm1, + expm1f and expm1l in <math.h> +

-

- BOOST_HAS_FTIME -

+

+ BOOST_HAS_FTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the Win32 API GetSystemTimeAsFileTime. -

+

+ The platform has the Win32 API GetSystemTimeAsFileTime. +

-

- BOOST_HAS_GETTIMEOFDAY -

+

+ BOOST_HAS_GETTIMEOFDAY +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API gettimeofday. -

+

+ The platform has the POSIX API gettimeofday. +

-

- BOOST_HAS_HASH -

+

+ BOOST_HAS_HASH +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation provides the (SGI) hash_set and hash_map - classes. When defined, BOOST_HASH_SET_HEADER - and BOOST_HASH_LIST_HEADER - will contain the names of the header needed to access hash_set - and hash_map; BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which the two class templates reside. -

+

+ The C++ implementation provides the (SGI) hash_set and hash_map classes. + When defined, BOOST_HASH_SET_HEADER + and BOOST_HASH_LIST_HEADER + will contain the names of the header needed to access hash_set and + hash_map; BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which the two class templates reside. +

-

- BOOST_HAS_LOG1P -

+

+ BOOST_HAS_LOG1P +

-

- Platform -

+

+ Platform +

-

- The platform has the functions log1p, - log1pf and log1pl in <math.h>. -

+

+ The platform has the functions log1p, + log1pf and log1pl in <math.h>. +

-

- BOOST_HAS_MACRO_USE_FACET -

+

+ BOOST_HAS_MACRO_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet, - but has a macro _USE(loc, Type) that does the job. This is primarily - for the Dinkumware std lib. -

+

+ The standard library lacks a conforming std::use_facet, + but has a macro _USE(loc, Type) that does the job. This is primarily + for the Dinkumware std lib. +

-

- BOOST_HAS_MS_INT64 -

+

+ BOOST_HAS_MS_INT64 +

-

- Compiler -

+

+ Compiler +

-

- The compiler supports the __int64 - data type. -

+

+ The compiler supports the __int64 + data type. +

-

- BOOST_HAS_NANOSLEEP -

+

+ BOOST_HAS_NANOSLEEP +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API nanosleep. -

+

+ The platform has the POSIX API nanosleep. +

-

- BOOST_HAS_NL_TYPES_H -

+

+ BOOST_HAS_NL_TYPES_H +

-

- Platform -

+

+ Platform +

-

- The platform has an <nl_types.h>. -

+

+ The platform has an <nl_types.h>. +

-

- BOOST_HAS_NRVO -

+

+ BOOST_HAS_NRVO +

-

- Compiler -

+

+ Compiler +

-

- Indicated that the compiler supports the named return value optimization - (NRVO). Used to select the most efficient implementation for some - function. See <boost/operators.hpp> for example. -

+

+ Indicated that the compiler supports the named return value optimization + (NRVO). Used to select the most efficient implementation for some + function. See <boost/operators.hpp> for example. +

-

- BOOST_HAS_PARTIAL_STD_ALLOCATOR -

+

+ BOOST_HAS_PARTIAL_STD_ALLOCATOR +

-

- Standard Library -

+

+ Standard Library +

-

- The standard library has a partially conforming std::allocator - class, but without any of the member templates. -

+

+ The standard library has a partially conforming std::allocator + class, but without any of the member templates. +

-

- BOOST_HAS_PTHREAD_DELAY_NP -

+

+ BOOST_HAS_PTHREAD_DELAY_NP +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_delay_np. -

+

+ The platform has the POSIX API pthread_delay_np. +

-

- BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -

+

+ BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_mutexattr_settype. -

+

+ The platform has the POSIX API pthread_mutexattr_settype. +

-

- BOOST_HAS_PTHREAD_YIELD -

+

+ BOOST_HAS_PTHREAD_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_yield. -

+

+ The platform has the POSIX API pthread_yield. +

-

- BOOST_HAS_PTHREADS -

+

+ BOOST_HAS_PTHREADS +

-

- Platform -

+

+ Platform +

-

- The platform support POSIX style threads. -

+

+ The platform support POSIX style threads. +

-

- BOOST_HAS_SCHED_YIELD -

+

+ BOOST_HAS_SCHED_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API sched_yield. -

+

+ The platform has the POSIX API sched_yield. +

-

- BOOST_HAS_SGI_TYPE_TRAITS -

+

+ BOOST_HAS_SGI_TYPE_TRAITS +

-

- Compiler, Standard library -

+

+ Compiler, Standard library +

-

- The compiler has native support for SGI style type traits. -

+

+ The compiler has native support for SGI style type traits. +

-

- BOOST_HAS_STDINT_H -

+

+ BOOST_HAS_STDINT_H +

-

- Platform -

+

+ Platform +

-

- The platform has a <stdint.h> -

+

+ The platform has a <stdint.h> +

-

- BOOST_HAS_SLIST -

+

+ BOOST_HAS_SLIST +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation provides the (SGI) slist class. When defined, - BOOST_SLIST_HEADER - will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which slist - resides. -

+

+ The C++ implementation provides the (SGI) slist class. When defined, + BOOST_SLIST_HEADER + will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which slist + resides. +

-

- BOOST_HAS_STLP_USE_FACET -

+

+ BOOST_HAS_STLP_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet, - but has a workaround class-version that does the job. This is primarily - for the STLport std lib. -

+

+ The standard library lacks a conforming std::use_facet, + but has a workaround class-version that does the job. This is primarily + for the STLport std lib. +

-

- BOOST_HAS_TR1_ARRAY -

+

+ BOOST_HAS_TR1_ARRAY +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <array>. -

+

+ The library has a TR1 conforming version of <array>. +

-

- BOOST_HAS_TR1_COMPLEX_OVERLOADS -

+

+ BOOST_HAS_TR1_COMPLEX_OVERLOADS +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that supports passing scalars to the complex number algorithms. -

+

+ The library has a version of <complex> + that supports passing scalars to the complex number algorithms. +

-

- BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -

+

+ BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that includes the new inverse trig functions from TR1. -

+

+ The library has a version of <complex> + that includes the new inverse trig functions from TR1. +

-

- BOOST_HAS_TR1_REFERENCE_WRAPPER -

+

+ BOOST_HAS_TR1_REFERENCE_WRAPPER +

-

- Standard library -

+

+ Standard library +

-

- The library has TR1 conforming reference wrappers in <functional>. -

+

+ The library has TR1 conforming reference wrappers in <functional>. +

-

- BOOST_HAS_TR1_RESULT_OF -

+

+ BOOST_HAS_TR1_RESULT_OF +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming result_of template in <functional>. -

+

+ The library has a TR1 conforming result_of template in <functional>. +

-

- BOOST_HAS_TR1_MEM_FN -

+

+ BOOST_HAS_TR1_MEM_FN +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming mem_fn function template in <functional>. -

+

+ The library has a TR1 conforming mem_fn function template in <functional>. +

-

- BOOST_HAS_TR1_BIND -

+

+ BOOST_HAS_TR1_BIND +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming bind function template in <functional>. -

+

+ The library has a TR1 conforming bind function template in <functional>. +

-

- BOOST_HAS_TR1_FUNCTION -

+

+ BOOST_HAS_TR1_FUNCTION +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming function class template in <functional>. -

+

+ The library has a TR1 conforming function class template in <functional>. +

-

- BOOST_HAS_TR1_HASH -

+

+ BOOST_HAS_TR1_HASH +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming hash function template in <functional>. -

+

+ The library has a TR1 conforming hash function template in <functional>. +

-

- BOOST_HAS_TR1_SHARED_PTR -

+

+ BOOST_HAS_TR1_SHARED_PTR +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming shared_ptr - class template in <memory>. -

+

+ The library has a TR1 conforming shared_ptr + class template in <memory>. +

-

- BOOST_HAS_TR1_RANDOM -

+

+ BOOST_HAS_TR1_RANDOM +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <random>. -

+

+ The library has a TR1 conforming version of <random>. +

-

- BOOST_HAS_TR1_REGEX -

+

+ BOOST_HAS_TR1_REGEX +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <regex>. -

+

+ The library has a TR1 conforming version of <regex>. +

-

- BOOST_HAS_TR1_TUPLE -

+

+ BOOST_HAS_TR1_TUPLE +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <tuple>. -

+

+ The library has a TR1 conforming version of <tuple>. +

-

- BOOST_HAS_TR1_TYPE_TRAITS -

+

+ BOOST_HAS_TR1_TYPE_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <type_traits>. -

+

+ The library has a TR1 conforming version of <type_traits>. +

-

- BOOST_HAS_TR1_UTILITY -

+

+ BOOST_HAS_TR1_UTILITY +

-

- Standard library -

+

+ Standard library +

-

- The library has the TR1 additions to <utility> - (tuple interface to std::pair). -

+

+ The library has the TR1 additions to <utility> + (tuple interface to std::pair). +

-

- BOOST_HAS_TR1_UNORDERED_MAP -

+

+ BOOST_HAS_TR1_UNORDERED_MAP +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_map>. -

+

+ The library has a TR1 conforming version of <unordered_map>. +

-

- BOOST_HAS_TR1_UNORDERED_SET -

+

+ BOOST_HAS_TR1_UNORDERED_SET +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_set>. -

+

+ The library has a TR1 conforming version of <unordered_set>. +

-

- BOOST_HAS_TR1 -

+

+ BOOST_HAS_TR1 +

-

- Standard library -

+

+ Standard library +

-

- Implies all the other BOOST_HAS_TR1_* macros should be set. -

+

+ Implies all the other BOOST_HAS_TR1_* macros should be set. +

-

- BOOST_HAS_THREADS -

+

+ BOOST_HAS_THREADS +

-

- Platform, Compiler -

+

+ Platform, Compiler +

-

- Defined if the compiler, in its current translation mode, supports - multiple threads of execution. -

+

+ Defined if the compiler, in its current translation mode, supports + multiple threads of execution. +

-

- BOOST_HAS_TWO_ARG_USE_FACET -

+

+ BOOST_HAS_TWO_ARG_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet, but has - a two argument version that does the job. This is primarily for - the Rogue Wave std lib. -

+

+ The standard library lacks a conforming std::use_facet, but has a + two argument version that does the job. This is primarily for the + Rogue Wave std lib. +

-

- BOOST_HAS_UNISTD_H -

+

+ BOOST_HAS_UNISTD_H +

-

- Platform -

+

+ Platform +

-

- The Platform provides <unistd.h>. -

+

+ The Platform provides <unistd.h>. +

-

- BOOST_HAS_WINTHREADS -

+

+ BOOST_HAS_WINTHREADS +

-

- Platform -

+

+ Platform +

-

- The platform supports MS Windows style threads. -

+

+ The platform supports MS Windows style threads. +

-

- BOOST_MSVC_STD_ITERATOR -

+

+ BOOST_MSVC_STD_ITERATOR +

-

- Standard library -

+

+ Standard library +

-

- Microsoft's broken version of std::iterator - is being used. This implies that std::iterator - takes no more than two template parameters. -

+

+ Microsoft's broken version of std::iterator + is being used. This implies that std::iterator + takes no more than two template parameters. +

-

- BOOST_MSVC6_MEMBER_TEMPLATES -

+

+ BOOST_MSVC6_MEMBER_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- Microsoft Visual C++ 6.0 has enough member template idiosyncrasies - (being polite) that BOOST_NO_MEMBER_TEMPLATES - is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES - is defined to allow compiler specific workarounds. This macro gets - defined automatically if BOOST_NO_MEMBER_TEMPLATES - is not defined - in other words this is treated as a strict subset - of the features required by the standard. -

+

+ Microsoft Visual C++ 6.0 has enough member template idiosyncrasies + (being polite) that BOOST_NO_MEMBER_TEMPLATES + is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES + is defined to allow compiler specific workarounds. This macro gets + defined automatically if BOOST_NO_MEMBER_TEMPLATES + is not defined - in other words this is treated as a strict subset + of the features required by the standard. +

-

- BOOST_HAS_STDINT_H -

+

+ BOOST_HAS_STDINT_H +

-

- Platform -

+

+ Platform +

-

- There are no 1998 C++ Standard headers <stdint.h> - or <cstdint>, although the 1999 C Standard - does include <stdint.h>. - If <stdint.h> is present, <boost/stdint.h> - can make good use of it, so a flag is supplied (signalling presence; - thus the default is not present, conforming to the current C++ - standard). -

+

+ There are no 1998 C++ Standard headers <stdint.h> + or <cstdint>, although the 1999 C Standard + does include <stdint.h>. If <stdint.h> + is present, <boost/stdint.h> can make good use of it, so a + flag is supplied (signalling presence; thus the default is not present, + conforming to the current C++ standard). +

-
+

Macros that describe possible C++0x features @@ -2200,31 +2200,31 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_HAS_CONCEPTS -

+

+ BOOST_HAS_CONCEPTS +

-

- The compiler supports concepts. -

+

+ The compiler supports concepts. +

-
+

Macros that describe C++0x features not supported @@ -2240,584 +2240,582 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_NO_0X_HDR_ARRAY -

+

+ BOOST_NO_0X_HDR_ARRAY +

-

- The standard library does not provide header <array>. -

+

+ The standard library does not provide header <array>. +

-

- BOOST_NO_0X_HDR_CHRONO -

+

+ BOOST_NO_0X_HDR_CHRONO +

-

- The standard library does not provide header <chrono>. -

+

+ The standard library does not provide header <chrono>. +

-

- BOOST_NO_0X_HDR_CODECVT -

+

+ BOOST_NO_0X_HDR_CODECVT +

-

- The standard library does not provide header <codecvt>. -

+

+ The standard library does not provide header <codecvt>. +

-

- BOOST_NO_0X_HDR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONCEPTS +

-

- The standard library does not provide header <concepts>. -

+

+ The standard library does not provide header <concepts>. +

-

- BOOST_NO_0X_HDR_CONDITION_VARIABLE -

+

+ BOOST_NO_0X_HDR_CONDITION_VARIABLE +

-

- The standard library does not provide header <condition_variable>. -

+

+ The standard library does not provide header <condition_variable>. +

-

- BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +

-

- The standard library does not provide header <container_concepts>. -

+

+ The standard library does not provide header <container_concepts>. +

-

- BOOST_NO_0X_HDR_FORWARD_LIST -

+

+ BOOST_NO_0X_HDR_FORWARD_LIST +

-

- The standard library does not provide header <forward_list>. -

+

+ The standard library does not provide header <forward_list>. +

-

- BOOST_NO_0X_HDR_FUTURE -

+

+ BOOST_NO_0X_HDR_FUTURE +

-

- The standard library does not provide header <future>. -

+

+ The standard library does not provide header <future>. +

-

- BOOST_NO_0X_HDR_INITIALIZER_LIST -

+

+ BOOST_NO_0X_HDR_INITIALIZER_LIST +

-

- The standard library does not provide header <initializer_list>. -

+

+ The standard library does not provide header <initializer_list>. +

-

- BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +

-

- The standard library does not provide header <iterator_concepts>. -

+

+ The standard library does not provide header <iterator_concepts>. +

-

- BOOST_NO_0X_HDR_MEMORY_CONCEPTS -

+

+ BOOST_NO_0X_HDR_MEMORY_CONCEPTS +

-

- The standard library does not provide header <memory_concepts>. -

+

+ The standard library does not provide header <memory_concepts>. +

-

- BOOST_NO_0X_HDR_MUTEX -

+

+ BOOST_NO_0X_HDR_MUTEX +

-

- The standard library does not provide header <mutex>. -

+

+ The standard library does not provide header <mutex>. +

-

- BOOST_NO_0X_HDR_RANDOM -

+

+ BOOST_NO_0X_HDR_RANDOM +

-

- The standard library does not provide header <random>. -

+

+ The standard library does not provide header <random>. +

-

- BOOST_NO_0X_HDR_RATIO -

+

+ BOOST_NO_0X_HDR_RATIO +

-

- The standard library does not provide header <ratio>. -

+

+ The standard library does not provide header <ratio>. +

-

- BOOST_NO_0X_HDR_REGEX -

+

+ BOOST_NO_0X_HDR_REGEX +

-

- The standard library does not provide header <regex>. -

+

+ The standard library does not provide header <regex>. +

-

- BOOST_NO_0X_HDR_SYSTEM_ERROR -

+

+ BOOST_NO_0X_HDR_SYSTEM_ERROR +

-

- The standard library does not provide header <system_error>. -

+

+ The standard library does not provide header <system_error>. +

-

- BOOST_NO_0X_HDR_THREAD -

+

+ BOOST_NO_0X_HDR_THREAD +

-

- The standard library does not provide header <thread>. -

+

+ The standard library does not provide header <thread>. +

-

- BOOST_NO_0X_HDR_TUPLE -

+

+ BOOST_NO_0X_HDR_TUPLE +

-

- The standard library does not provide header <tuple>. -

+

+ The standard library does not provide header <tuple>. +

-

- BOOST_NO_0X_HDR_TYPE_TRAITS -

+

+ BOOST_NO_0X_HDR_TYPE_TRAITS +

-

- The standard library does not provide header <type_traits>. -

+

+ The standard library does not provide header <type_traits>. +

-

- BOOST_NO_0X_HDR_UNORDERED_MAP -

+

+ BOOST_NO_0X_HDR_UNORDERED_MAP +

-

- The standard library does not provide header <unordered_map>. -

+

+ The standard library does not provide header <unordered_map>. +

-

- BOOST_NO_0X_HDR_UNORDERED_SET -

+

+ BOOST_NO_0X_HDR_UNORDERED_SET +

-

- The standard library does not provide header <unordered_set>. -

+

+ The standard library does not provide header <unordered_set>. +

-

- BOOST_NO_AUTO_DECLARATIONS -

+

+ BOOST_NO_AUTO_DECLARATIONS +

-

- The compiler does not support type deduction for variables declared - with the auto keyword - (auto var - = ...;). -

+

+ The compiler does not support type deduction for variables declared + with the auto keyword + (auto var + = ...;). +

-

- BOOST_NO_AUTO_MULTIDECLARATIONS -

+

+ BOOST_NO_AUTO_MULTIDECLARATIONS +

-

- The compiler does not support type deduction for multiple variables - declared with the auto - keyword (auto var - = ..., - *ptr - = ...;). -

+

+ The compiler does not support type deduction for multiple variables + declared with the auto + keyword (auto var + = ..., + *ptr + = ...;). +

-

- BOOST_NO_CHAR16_T -

+

+ BOOST_NO_CHAR16_T +

-

- The compiler does not support type char16_t. -

+

+ The compiler does not support type char16_t. +

-

- BOOST_NO_CHAR32_T -

+

+ BOOST_NO_CHAR32_T +

-

- The compiler does not support type char32_t. -

+

+ The compiler does not support type char32_t. +

-

- BOOST_NO_CONCEPTS -

+

+ BOOST_NO_CONCEPTS +

-

- The compiler does not support Concepts. -

+

+ The compiler does not support Concepts. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_CONSTEXPR -

+

+ BOOST_NO_CONSTEXPR +

-

- The compiler does not support constexpr. -

+

+ The compiler does not support constexpr. +

-

- BOOST_NO_DECLTYPE -

+

+ BOOST_NO_DECLTYPE +

-

- The compiler does not support decltype. -

+

+ The compiler does not support decltype. +

-

- BOOST_NO_DEFAULTED_FUNCTIONS -

+

+ BOOST_NO_DEFAULTED_FUNCTIONS +

-

- The compiler does not support defaulted (= - default) functions. -

+

+ The compiler does not support defaulted (= + default) functions. +

-

- BOOST_NO_DELETED_FUNCTIONS -

+

+ BOOST_NO_DELETED_FUNCTIONS +

-

- The compiler does not support deleted (= - delete) functions. -

+

+ The compiler does not support deleted (= + delete) functions. +

-

- BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -

+

+ BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +

-

- The compiler does not support explicit conversion operators (explicit operator - T()). -

+

+ The compiler does not support explicit conversion operators (explicit operator + T()). +

-

- BOOST_NO_EXTERN_TEMPLATE -

+

+ BOOST_NO_EXTERN_TEMPLATE +

-

- The compiler does not support explicit instantiation declarations - for templates (explicit - template). -

+

+ The compiler does not support explicit instantiation forward declarations + for templates (extern template ...). +

-

- BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -

+

+ BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +

-

- The compiler does not support default template arguments for function - templates. -

+

+ The compiler does not support default template arguments for function + templates. +

-

- BOOST_NO_INITIALIZER_LISTS -

+

+ BOOST_NO_INITIALIZER_LISTS +

-

- The C++ compiler does not support C++0x initializer lists. -

+

+ The C++ compiler does not support C++0x initializer lists. +

-

- BOOST_NO_LAMBDAS -

+

+ BOOST_NO_LAMBDAS +

-

- The compiler does not support Lambdas. -

+

+ The compiler does not support Lambdas. +

-

- BOOST_NO_LONG_LONG -

+

+ BOOST_NO_LONG_LONG +

-

- The compiler does not support long - long. -

+

+ The compiler does not support long + long. +

-

- BOOST_NO_NULLPTR -

+

+ BOOST_NO_NULLPTR +

-

- The compiler does not support 'nullptr'. -

+

+ The compiler does not support 'nullptr'. +

-

- BOOST_NO_RAW_LITERALS -

+

+ BOOST_NO_RAW_LITERALS +

-

- The compiler does not support raw string literals. -

+

+ The compiler does not support raw string literals. +

-

- BOOST_NO_RVALUE_REFERENCES -

+

+ BOOST_NO_RVALUE_REFERENCES +

-

- The compiler does not support r-value references. -

+

+ The compiler does not support r-value references. +

-

- BOOST_NO_SCOPED_ENUMS -

+

+ BOOST_NO_SCOPED_ENUMS +

-

- The compiler does not support scoped enumerations (enum class). -

+

+ The compiler does not support scoped enumerations (enum class). +

-

- BOOST_NO_STATIC_ASSERT -

+

+ BOOST_NO_STATIC_ASSERT +

-

- The compiler does not support static_assert. -

+

+ The compiler does not support static_assert. +

-

- BOOST_NO_STD_UNORDERD -

+

+ BOOST_NO_STD_UNORDERD +

-

- The standard library does not support <unordered_map> and - <unordered_set>. -

+

+ The standard library does not support <unordered_map> and <unordered_set>. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_UNICODE_LITERALS -

+

+ BOOST_NO_UNICODE_LITERALS +

-

- The compiler does not support Unicode (u8, - u, U) literals. -

+

+ The compiler does not support Unicode (u8, + u, U) literals. +

-

- BOOST_NO_VARIADIC_TEMPLATES -

+

+ BOOST_NO_VARIADIC_TEMPLATES +

-

- The compiler does not support variadic templates. -

+

+ The compiler does not support variadic templates. +

@@ -2825,7 +2823,7 @@

-
+

Boost Helper Macros @@ -2841,33 +2839,33 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_WORKAROUND -

+

+ BOOST_WORKAROUND +

-

- This macro is used where a compiler specific workaround is required - that is not otherwise described by one of the other Boost.Config - macros. To use the macro you must first +

+ This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first

#include <boost/detail/workaround.hpp>
 

- usage is then: + usage is then:

#if BOOST_WORKAROUND(MACRONAME, CONDITION)
    // workaround code goes here...
@@ -2876,157 +2874,157 @@
 #endif
 

- where MACRONAME - is a macro that usually describes the version number to be tested - against, and CONDITION - is a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, - <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. -

-

- The macro can also be used with BOOST_TESTED_AT - if all current compiler versions exhibit the issue, but the issue - is expected to be fixed at some later point. -

-

- For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ unless - the macro BOOST_DETECT_OUTDATED_WORKAROUNDS - is defined, in which case evaluates to (__BORLANDC__ <= - 0x590). -

-

- Note: the ultimate source of documentation - for this macro is in boost/detail/workaround.hpp. -

+ where MACRONAME is + a macro that usually describes the version number to be tested against, + and CONDITION is + a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, + <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. +

+

+ The macro can also be used with BOOST_TESTED_AT + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. +

+

+ For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ + unless the macro BOOST_DETECT_OUTDATED_WORKAROUNDS + is defined, in which case evaluates to (__BORLANDC__ <= + 0x590). +

+

+ Note: the ultimate source of documentation + for this macro is in boost/detail/workaround.hpp. +

-

- BOOST_DEDUCED_TYPENAME -

+

+ BOOST_DEDUCED_TYPENAME +

-

- Some compilers don't support the use of typename for dependent - types in deduced contexts. This macro expands to nothing on those - compilers, and typename elsewhere. For example, replace: template <class T> void - f(T, - typename T::type); with: template - <class - T> - void f(T, BOOST_DEDUCED_TYPENAME - T::type); -

+

+ Some compilers don't support the use of typename for dependent types + in deduced contexts. This macro expands to nothing on those compilers, + and typename elsewhere. For example, replace: template + <class + T> + void f(T, typename + T::type); + with: template <class T> void + f(T, BOOST_DEDUCED_TYPENAME T::type); +

-

- BOOST_HASH_MAP_HEADER -

+

+ BOOST_HASH_MAP_HEADER +

-

- The header to include to get the SGI hash_map - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_map + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_HASH_SET_HEADER -

+

+ BOOST_HASH_SET_HEADER +

-

- The header to include to get the SGI hash_set - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_set + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_SLIST_HEADER -

+

+ BOOST_SLIST_HEADER +

-

- The header to include to get the SGI slist - class. This macro is only available if BOOST_HAS_SLIST - is defined. -

+

+ The header to include to get the SGI slist + class. This macro is only available if BOOST_HAS_SLIST + is defined. +

-

- BOOST_STD_EXTENSION_NAMESPACE -

+

+ BOOST_STD_EXTENSION_NAMESPACE +

-

- The namespace used for std library extensions (hashtable classes - etc). -

+

+ The namespace used for std library extensions (hashtable classes + etc). +

-

- BOOST_STATIC_CONSTANT(Type, assignment) -

+

+ BOOST_STATIC_CONSTANT(Type, assignment) +

-

- On compilers which don't allow in-class initialization of static - integral constant members, we must use enums as a workaround if - we want the constants to be available at compile-time. This macro - gives us a convenient way to declare such constants. For example - instead of: +

+ On compilers which don't allow in-class initialization of static + integral constant members, we must use enums as a workaround if we + want the constants to be available at compile-time. This macro gives + us a convenient way to declare such constants. For example instead + of:

struct foo{
    static const int value = 2;
 };
 

- use: + use:

struct foo{
    BOOST_STATIC_CONSTANT(int, value = 2);
 };
 

-

+

-

- BOOST_UNREACHABLE_RETURN(result) -

+

+ BOOST_UNREACHABLE_RETURN(result) +

-

- Normally evaluates to nothing, but evaluates to return x; if the - compiler requires a return, even when it can never be reached. -

+

+ Normally evaluates to nothing, but evaluates to return x; if the + compiler requires a return, even when it can never be reached. +

-

- BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) -

+

+ BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) +

-

- Some compilers silently "fold" different function template - instantiations if some of the template parameters don't appear - in the function parameter list. For instance: +

+ Some compilers silently "fold" different function template + instantiations if some of the template parameters don't appear in + the function parameter list. For instance:

#include <iostream>
 #include <ostream>
@@ -3047,10 +3045,10 @@
 }
 

- incorrectly outputs 2 2 double double on VC++ - 6. These macros, to be used in the function parameter list, fix - the problem without effects on the calling syntax. For instance, - in the case above write: + incorrectly outputs 2 2 double double on VC++ + 6. These macros, to be used in the function parameter list, fix the + problem without effects on the calling syntax. For instance, in the + case above write:

template <int n>
 void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
@@ -3059,105 +3057,105 @@
 void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
 

- Beware that they can declare (for affected compilers) a dummy defaulted - parameter, so they -

-

- a) should be always invoked at the end of the parameter list -

-

- b) can't be used if your function - template is multiply declared. -

-

- Furthermore, in order to add any needed comma separator, an APPEND_* - version must be used when the macro invocation appears after a - normal parameter declaration or after the invocation of another - macro of this same group. -

+ Beware that they can declare (for affected compilers) a dummy defaulted + parameter, so they +

+

+ a) should be always invoked at the end of the parameter list +

+

+ b) can't be used if your function + template is multiply declared. +

+

+ Furthermore, in order to add any needed comma separator, an APPEND_* + version must be used when the macro invocation appears after a normal + parameter declaration or after the invocation of another macro of + this same group. +

-

- BOOST_USE_FACET(Type, loc) -

+

+ BOOST_USE_FACET(Type, + loc) +

-

- When the standard library does not have a comforming std::use_facet there are various workarounds - available, but they differ from library to library. This macro - provides a consistent way to access a locale's facets. For example, - replace: std::use_facet<Type>(loc); - with: BOOST_USE_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_USE_FACET. -

+

+ When the standard library does not have a comforming std::use_facet there are various workarounds + available, but they differ from library to library. This macro provides + a consistent way to access a locale's facets. For example, replace: + std::use_facet<Type>(loc); + with: BOOST_USE_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_USE_FACET. +

-

- BOOST_HAS_FACET(Type, loc) -

+

+ BOOST_HAS_FACET(Type, + loc) +

-

- When the standard library does not have a comforming std::has_facet there are various workarounds - available, but they differ from library to library. This macro - provides a consistent way to check a locale's facets. For example, - replace: std::has_facet<Type>(loc); - with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_HAS_FACET. -

+

+ When the standard library does not have a comforming std::has_facet there are various workarounds + available, but they differ from library to library. This macro provides + a consistent way to check a locale's facets. For example, replace: + std::has_facet<Type>(loc); + with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_HAS_FACET. +

-

- BOOST_NESTED_TEMPLATE -

+

+ BOOST_NESTED_TEMPLATE +

-

- Member templates are supported by some compilers even though they - can't use the A::template - member<U> - syntax, as a workaround replace: typedef - typename A::template - rebind<U> - binder; - with: typedef typename - A::BOOST_NESTED_TEMPLATE rebind<U> binder; -

+

+ Member templates are supported by some compilers even though they + can't use the A::template member<U> syntax, as a workaround replace: + typedef typename + A::template rebind<U> binder; with: typedef + typename A::BOOST_NESTED_TEMPLATE + rebind<U> + binder; +

-

- BOOST_STRINGIZE(X) -

+

+ BOOST_STRINGIZE(X) +

-

- Converts the parameter X - to a string after macro replacement on X - has been performed. -

+

+ Converts the parameter X + to a string after macro replacement on X + has been performed. +

-

- BOOST_JOIN(X,Y) -

+

+ BOOST_JOIN(X,Y) +

-

- This piece of macro magic joins the two arguments together, even - when one of the arguments is itself a macro (see 16.3.1 in C++ - standard). This is normally used to create a mangled name in combination - with a predefined macro such a __LINE__. -

+

+ This piece of macro magic joins the two arguments together, even + when one of the arguments is itself a macro (see 16.3.1 in C++ standard). + This is normally used to create a mangled name in combination with + a predefined macro such a __LINE__. +

@@ -3165,7 +3163,7 @@

-
+

Boost Informational Macros @@ -3182,268 +3180,267 @@ -

- Macro -

+

+ Macro +

-

- Header -

+

+ Header +

-

- Description -

+

+ Description +

-

- BOOST_VERSION -

+

+ BOOST_VERSION +

-

- <boost/version.hpp> -

+

+ <boost/version.hpp> +

-

- Describes the boost version number in XYYYZZ format such that: - (BOOST_VERSION - % 100) is the sub-minor version, ((BOOST_VERSION - / 100) % 1000) - is the minor version, and (BOOST_VERSION / - 100000) - is the major version. -

+

+ Describes the boost version number in XYYYZZ format such that: (BOOST_VERSION + % 100) is the sub-minor version, ((BOOST_VERSION + / 100) % 1000) + is the minor version, and (BOOST_VERSION / + 100000) + is the major version. +

-

- BOOST_NO_INT64_T -

+

+ BOOST_NO_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if there are no 64-bit integral types: int64_t, - uint64_t etc. -

+

+ Defined if there are no 64-bit integral types: int64_t, + uint64_t etc. +

-

- BOOST_NO_INTEGRAL_INT64_T -

+

+ BOOST_NO_INTEGRAL_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if int64_t - as defined by <boost/cstdint.hpp> - is not usable in integral constant expressions. -

+

+ Defined if int64_t + as defined by <boost/cstdint.hpp> is not usable in integral constant + expressions. +

-

- BOOST_MSVC -

+

+ BOOST_MSVC +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the compiler is really Microsoft Visual C++, as opposed - to one of the many other compilers that also define _MSC_VER. Has the same value - as _MSC_VER. -

+

+ Defined if the compiler is really Microsoft Visual C++, as opposed + to one of the many other compilers that also define _MSC_VER. Has the same value as + _MSC_VER. +

-

- BOOST_MSVC_FULL_VER -

+

+ BOOST_MSVC_FULL_VER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined to a normalised 9 digit version of _MSC_FULL_VER (which - sometimes only has 8 digits), the macro has the form VVMMPPPPP - where VV is the major version number, MM is the minor version number, - and PPPPP is the compiler build number. -

+

+ Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes + only has 8 digits), the macro has the form VVMMPPPPP where VV is + the major version number, MM is the minor version number, and PPPPP + is the compiler build number. +

-

- BOOST_INTEL -

+

+ BOOST_INTEL +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the compiler is an Intel compiler, takes the same value - as the compiler version macro. -

+

+ Defined if the compiler is an Intel compiler, takes the same value + as the compiler version macro. +

-

- BOOST_CLANG -

+

+ BOOST_CLANG +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined to 1 if the compiler is the Clang compiler. -

+

+ Defined to 1 if the compiler is the Clang compiler. +

-

- BOOST_WINDOWS -

+

+ BOOST_WINDOWS +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the Windows platfrom API is available. -

+

+ Defined if the Windows platfrom API is available. +

-

- BOOST_DINKUMWARE_STDLIB -

+

+ BOOST_DINKUMWARE_STDLIB +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the dinkumware standard library is in use, takes the - same value as the Dinkumware library version macro _CPPLIB_VER if defined, otherwise - 1. -

+

+ Defined if the dinkumware standard library is in use, takes the same + value as the Dinkumware library version macro _CPPLIB_VER + if defined, otherwise 1. +

-

- BOOST_NO_WREGEX -

+

+ BOOST_NO_WREGEX +

-

- <boost/regex.hpp> -

+

+ <boost/regex.hpp> +

-

- Defined if the regex library does not support wide character regular - expressions. -

+

+ Defined if the regex library does not support wide character regular + expressions. +

-

- BOOST_COMPILER -

+

+ BOOST_COMPILER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name and version number of the - compiler in use. Mainly for debugging the configuration. -

+

+ Defined as a string describing the name and version number of the + compiler in use. Mainly for debugging the configuration. +

-

- BOOST_STDLIB -

+

+ BOOST_STDLIB +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name and version number of the - standard library in use. Mainly for debugging the configuration. -

+

+ Defined as a string describing the name and version number of the + standard library in use. Mainly for debugging the configuration. +

-

- BOOST_PLATFORM -

+

+ BOOST_PLATFORM +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name of the platform. Mainly - for debugging the configuration. -

+

+ Defined as a string describing the name of the platform. Mainly for + debugging the configuration. +

-
+

Macros for libraries with separate source code @@ -3460,14 +3457,14 @@ The following macros and helper headers are of use to authors whose libraries include separate source code, and are intended to address several issues:

-
    -
  • +
      +
    • Controlling shared library symbol visibility
    • -
    • +
    • Fixing the ABI of the compiled library
    • -
    • +
    • Selecting which compiled library to link against based upon the compilers settings
    • @@ -3476,7 +3473,7 @@ See Guidelines for Authors of Boost Libraries Containing Separate Source

      -
      +

      Macros controlling shared library symbol visibility @@ -3506,86 +3503,85 @@ -

      - Macro -

      +

      + Macro +

      -

      - Description -

      +

      + Description +

      -

      - BOOST_SYMBOL_EXPORT -

      +

      + BOOST_SYMBOL_EXPORT +

      -

      - Defines the syntax of a C++ language extension that indicates - a symbol is to be exported from a shared library. If the compiler - has no such extension, the macro is defined with no replacement - text. -

      +

      + Defines the syntax of a C++ language extension that indicates a + symbol is to be exported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

      -

      - BOOST_SYMBOL_IMPORT -

      +

      + BOOST_SYMBOL_IMPORT +

      -

      - Defines the syntax of a C++ language extension that indicates - a symbol is to be imported from a shared library. If the compiler - has no such extension, the macro is defined with no replacement - text. -

      +

      + Defines the syntax of a C++ language extension that indicates a + symbol is to be imported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

      -

      - BOOST_SYMBOL_VISIBLE -

      +

      + BOOST_SYMBOL_VISIBLE +

      -

      - Defines the syntax of a C++ language extension that indicates - a symbol is to be globally visible. If the compiler has no such - extension, the macro is defined with no replacement text. Needed - for classes that are not otherwise exported, but are used by - RTTI. Examples include class for objects that will be thrown - as exceptions or used in dynamic_casts, across shared library - boundaries. For example, a header-only exception class might - look like this: +

      + Defines the syntax of a C++ language extension that indicates a + symbol is to be globally visible. If the compiler has no such extension, + the macro is defined with no replacement text. Needed for classes + that are not otherwise exported, but are used by RTTI. Examples + include class for objects that will be thrown as exceptions or + used in dynamic_casts, across shared library boundaries. For example, + a header-only exception class might look like this:

      class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
       

      - Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch - my_exception thrown from a shared library compiled by GCC with - the -fvisibility=hidden option. -

      + Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception + thrown from a shared library compiled by GCC with the -fvisibility=hidden + option. +

      -

      - BOOST_HAS_DECLSPEC -

      +

      + BOOST_HAS_DECLSPEC +

      -

      - The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of - symbols from shared libraries. Deprecated. This macro - is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT - are now supplied. It is provided to support legacy code. -

      +

      + The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of symbols + from shared libraries. Deprecated. This macro is no longer + necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are + now supplied. It is provided to support legacy code. +

      @@ -3631,7 +3627,7 @@ ...

      -
      +

      ABI Fixing @@ -3689,7 +3685,7 @@ to point to their own prefix/suffix headers if they so wish.

      -
      +

      Automatic library selection @@ -3719,18 +3715,18 @@
      BOOST_LIB_NAME

      - Required: An identifier containing the basename of the library, for - example 'boost_regex'. -

      + Required: An identifier containing the basename of the library, for + example 'boost_regex'. +

      BOOST_DYN_LINK

      - Optional: when set link to dll rather than static library. -

      + Optional: when set link to dll rather than static library. +

      BOOST_LIB_DIAGNOSTIC

      - Optional: when set the header will print out the name of the library - selected (useful for debugging). -

      + Optional: when set the header will print out the name of the library + selected (useful for debugging). +

      diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 98d1302b..d3acebf8 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,7 +22,7 @@

      PrevUpHomeNext
      -
      +

      Guidelines for Boost Authors @@ -61,14 +61,14 @@

      Note that:

      -
        -
      • +
          +
        • Boost library implementers are not required to "#include <boost/config.hpp>", and are not required in any way to support compilers that do not comply with the C++ Standard (ISO/IEC 14882).
        • -
        • +
        • If a library implementer wishes to support some non-conforming compiler, or to support some platform specific feature, "#include <boost/config.hpp>" @@ -76,12 +76,12 @@ the standard headers such as <climits>, etc.
        • -
        • +
        • If configuration information can be deduced from standard headers such as <climits>, use those standard headers rather than <boost/config.hpp>.
        • -
        • +
        • Boost files that use macros defined in <boost/config.hpp> should have sensible, standard conforming, default behavior if the macro is not defined. This means that the starting point for porting <boost/config.hpp> @@ -89,21 +89,21 @@ In the rare case where there is no sensible default behavior, an #error message should describe the problem.
        • -
        • +
        • If a Boost library implementer wants something added to config.hpp, post a request on the Boost mailing list. There is no guarantee such a request will be honored; the intent is to limit the complexity of config.hpp.
        • -
        • +
        • The intent is to support only compilers which appear on their way to becoming C++ Standard compliant, and only recent releases of those compilers at that.
        • -
        • +
        • The intent is not to disable mainstream features now well-supported by the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
        -
        +

        Disabling Compiler Warnings @@ -116,17 +116,17 @@

        Note that:

        -
          -
        • +
            +
          • This header should never be included by another Boost header, it should only ever be used by a library source file or a test case.
          • -
          • +
          • The header should be included before you include any other header.
          • -
          • +
          • This header only disables warnings that are hard or impossible to otherwise deal with, and which are typically emitted by one compiler only, or in one compilers own standard library headers. @@ -142,47 +142,47 @@ -

            - Compiler -

            +

            + Compiler +

            -

            - Warning -

            +

            + Warning +

            -

            - Visual C++ 8 and later -

            +

            + Visual C++ 8 and later +

            -

            - C4996: - Error 'function': was declared deprecated -

            +

            + C4996: + Error 'function': was declared deprecated +

            -

            - Intel C++ -

            +

            + Intel C++ +

            -

            - Warning 1786: relates to the use of "deprecated" standard - library functions rather like C4996 in Visual C++. -

            +

            + Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++. +

        -
        +

        Adding New Defect Macros @@ -233,14 +233,14 @@ Once the test code is in place in libs/config/test, updating the configuration test system proceeds as:

        -
          -
        • +
            +
          • cd into libs/config/tools and run bjam. This generates the .cpp file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, config_test.cpp and config_info.cpp.

          • -
          • +
          • cd into libs/config/test/all and run bjam MACRONAME compiler-list, where MACRONAME is the name of the new macro, and @@ -251,7 +251,7 @@ If MACRONAME is defined when it should not be defined, xxx_fail_test will not report **passed**.

          • -
          • +
          • cd into libs/config/test and run bjam config_info config_test compiler-list. @@ -264,26 +264,26 @@

            Then you should:

            -
              -
            • +
                +
              • Define the defect macro in those config headers that require it.
              • -
              • +
              • Document the macro in this documentation (please do not forget this step!!)
              • -
              • +
              • Commit everything.
              • -
              • +
              • Keep an eye on the regression tests for new failures in Boost.Config caused by the addition.
              • -
              • +
              • Start using the macro.
            -
            +

            Adding New Feature Test Macros @@ -307,7 +307,7 @@ <unistd.h>).

            -
            +

            Modifying the Boost Configuration Headers diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 68cd4396..59a53ec9 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -22,7 +22,7 @@
            PrevUpHomeNext
            -
            +
            @@ -39,7 +39,7 @@ principles from the following article.

            -
            +
            @@ -102,7 +102,7 @@ code must be provided.

            -
            +
            diff --git a/doc/html/index.html b/doc/html/index.html index df39f221..045eaa57 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -18,7 +18,7 @@
            Next
            -
            +

            @@ -28,7 +28,7 @@

            -

            +

            Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

            @@ -92,7 +92,7 @@
            Acknowledgements
            -
            +
            -
            +

            Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

            -
            +

            The <boost/config.hpp> header @@ -168,7 +168,7 @@

            -
            +

            Using the configure script @@ -213,63 +213,63 @@ -

            - Variable -

            +

            + Variable +

            -

            - Description -

            +

            + Description +

            -

            - CXX -

            +

            + CXX +

            -

            - The name of the compiler, for example c++. -

            +

            + The name of the compiler, for example c++. +

            -

            - CXXFLAGS -

            +

            + CXXFLAGS +

            -

            - The compiler flags to use, for example -O2. -

            +

            + The compiler flags to use, for example -O2. +

            -

            - LDFLAGS -

            +

            + LDFLAGS +

            -

            - The linker flags to use, for example -L/mypath. -

            +

            + The linker flags to use, for example -L/mypath. +

            -

            - LIBS -

            +

            + LIBS +

            -

            - Any libraries to link in, for example -lpthread. -

            +

            + Any libraries to link in, for example -lpthread. +

            @@ -295,15 +295,15 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

            -
              -
            • +
                +
              • Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp provided by boost. This option allows only one configure-generated setup; boost developers should avoid this option, as it incurs the danger of accidentally committing a configure-modified <boost/config/user.hpp> to the cvs repository (something you will not be thanked for!).
              • -
              • +
              • Option 2: give the header a more memorable name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For example create a new sub-directory <boost-root>/boost/config/user/, and copy the header there; for example @@ -318,7 +318,7 @@

              -
              +

              User settable options @@ -337,354 +337,352 @@ -

              - Macro -

              +

              + Macro +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_USER_CONFIG -

              +

              + BOOST_USER_CONFIG +

              -

              - When defined, it should point to the name of the user configuration - file to include prior to any boost configuration files. When not - defined, defaults to <boost/config/user.hpp>. -

              +

              + When defined, it should point to the name of the user configuration + file to include prior to any boost configuration files. When not + defined, defaults to <boost/config/user.hpp>. +

              -

              - BOOST_COMPILER_CONFIG -

              +

              + BOOST_COMPILER_CONFIG +

              -

              - When defined, it should point to the name of the compiler configuration - file to use. Defining this cuts out the compiler selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG - to <boost/config/compiler/gcc.hpp>. -

              +

              + When defined, it should point to the name of the compiler configuration + file to use. Defining this cuts out the compiler selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG + to <boost/config/compiler/gcc.hpp>. +

              -

              - BOOST_STDLIB_CONFIG -

              +

              + BOOST_STDLIB_CONFIG +

              -

              - When defined, it should point to the name of the standard library - configuration file to use. Defining this cuts out the standard - library selection logic, and eliminates the dependency on the header - containing that logic. For example if you are using STLport, then - you could define BOOST_STDLIB_CONFIG - to <boost/config/stdlib/stlport.hpp>. -

              +

              + When defined, it should point to the name of the standard library + configuration file to use. Defining this cuts out the standard library + selection logic, and eliminates the dependency on the header containing + that logic. For example if you are using STLport, then you could + define BOOST_STDLIB_CONFIG + to <boost/config/stdlib/stlport.hpp>. +

              -

              - BOOST_PLATFORM_CONFIG -

              +

              + BOOST_PLATFORM_CONFIG +

              -

              - When defined, it should point to the name of the platform configuration - file to use. Defining this cuts out the platform selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are compiling on linux, then you could define - BOOST_PLATFORM_CONFIG - to <boost/config/platform/linux.hpp>. -

              +

              + When defined, it should point to the name of the platform configuration + file to use. Defining this cuts out the platform selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are compiling on linux, then you could define + BOOST_PLATFORM_CONFIG + to <boost/config/platform/linux.hpp>. +

              -

              - BOOST_NO_COMPILER_CONFIG -

              +

              + BOOST_NO_COMPILER_CONFIG +

              -

              - When defined, no compiler configuration file is selected or included, - define when the compiler is fully conformant with the standard, - or where the user header (see BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

              +

              + When defined, no compiler configuration file is selected or included, + define when the compiler is fully conformant with the standard, or + where the user header (see BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

              -

              - BOOST_NO_STDLIB_CONFIG -

              +

              + BOOST_NO_STDLIB_CONFIG +

              -

              - When defined, no standard library configuration file is selected - or included, define when the standard library is fully conformant - with the standard, or where the user header (see BOOST_USER_CONFIG), has had any - options necessary added to it, for example by an autoconf generated - configure script. -

              +

              + When defined, no standard library configuration file is selected + or included, define when the standard library is fully conformant + with the standard, or where the user header (see BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

              -

              - BOOST_NO_PLATFORM_CONFIG -

              +

              + BOOST_NO_PLATFORM_CONFIG +

              -

              - When defined, no platform configuration file is selected or included, - define when the platform is fully conformant with the standard - (and has no useful extra features), or where the user header (see - BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

              +

              + When defined, no platform configuration file is selected or included, + define when the platform is fully conformant with the standard (and + has no useful extra features), or where the user header (see BOOST_USER_CONFIG), has had any + options necessary added to it, for example by an autoconf generated + configure script. +

              -

              - BOOST_NO_CONFIG -

              +

              + BOOST_NO_CONFIG +

              -

              - Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, - BOOST_NO_STDLIB_CONFIG - and BOOST_NO_PLATFORM_CONFIG. -

              +

              + Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, + BOOST_NO_STDLIB_CONFIG + and BOOST_NO_PLATFORM_CONFIG. +

              -

              - BOOST_STRICT_CONFIG -

              +

              + BOOST_STRICT_CONFIG +

              -

              - The normal behavior for compiler versions that are newer than the - last known version, is to assume that they have all the same defects - as the last known version. By setting this define, then compiler - versions that are newer than the last known version are assumed - to be fully conforming with the standard. This is probably most - useful for boost developers or testers, and for those who want - to use boost to test beta compiler versions. -

              +

              + The normal behavior for compiler versions that are newer than the + last known version, is to assume that they have all the same defects + as the last known version. By setting this define, then compiler + versions that are newer than the last known version are assumed to + be fully conforming with the standard. This is probably most useful + for boost developers or testers, and for those who want to use boost + to test beta compiler versions. +

              -

              - BOOST_ASSERT_CONFIG -

              +

              + BOOST_ASSERT_CONFIG +

              -

              - When this flag is set, if the config finds anything unknown, then - it will stop with a #error rather than continue. Boost regression - testers should set this define, as should anyone who wants to quickly - check whether boost is supported on their platform. -

              +

              + When this flag is set, if the config finds anything unknown, then + it will stop with a #error rather than continue. Boost regression + testers should set this define, as should anyone who wants to quickly + check whether boost is supported on their platform. +

              -

              - BOOST_DISABLE_THREADS -

              +

              + BOOST_DISABLE_THREADS +

              -

              - When defined, disables threading support, even if the compiler - in its current translation mode supports multiple threads. -

              +

              + When defined, disables threading support, even if the compiler in + its current translation mode supports multiple threads. +

              -

              - BOOST_DISABLE_WIN32 -

              +

              + BOOST_DISABLE_WIN32 +

              -

              - When defined, disables the use of Win32 specific API's, even when - these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless - BOOST_HAS_PTHREADS - is set. This option may be set automatically by the config system - when it detects that the compiler is in "strict mode". -

              +

              + When defined, disables the use of Win32 specific API's, even when + these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless BOOST_HAS_PTHREADS is set. This + option may be set automatically by the config system when it detects + that the compiler is in "strict mode". +

              -

              - BOOST_DISABLE_ABI_HEADERS -

              +

              + BOOST_DISABLE_ABI_HEADERS +

              -

              - Stops boost headers from including any prefix/suffix headers that - normally control things like struct packing and alignment. -

              +

              + Stops boost headers from including any prefix/suffix headers that + normally control things like struct packing and alignment. +

              -

              - BOOST_ABI_PREFIX -

              +

              + BOOST_ABI_PREFIX +

              -

              - A prefix header to include in place of whatever boost.config would - normally select, any replacement should set up struct packing and - alignment options as required. -

              +

              + A prefix header to include in place of whatever boost.config would + normally select, any replacement should set up struct packing and + alignment options as required. +

              -

              - BOOST_ABI_SUFFIX -

              +

              + BOOST_ABI_SUFFIX +

              -

              - A suffix header to include in place of whatever boost.config would - normally select, any replacement should undo the effects of the - prefix header. -

              +

              + A suffix header to include in place of whatever boost.config would + normally select, any replacement should undo the effects of the prefix + header. +

              -

              - BOOST_ALL_DYN_LINK -

              +

              + BOOST_ALL_DYN_LINK +

              -

              - Forces all libraries that have separate source, to be linked as - dll's rather than static libraries on Microsoft Windows (this macro - is used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may - only be dynamically linked (Boost.Threads for example), in these - cases this macro has no effect. -

              +

              + Forces all libraries that have separate source, to be linked as dll's + rather than static libraries on Microsoft Windows (this macro is + used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may only + be dynamically linked (Boost.Threads for example), in these cases + this macro has no effect. +

              -

              - BOOST_WHATEVER_DYN_LINK -

              +

              + BOOST_WHATEVER_DYN_LINK +

              -

              - Forces library "whatever" to be linked as a dll rather - than a static library on Microsoft Windows: replace the WHATEVER - part of the macro name with the name of the library that you want - to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK - or BOOST_REGEX_DYN_LINK - etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may - only be dynamically linked (Boost.Threads for example), in these - cases this macro is unsupported. -

              +

              + Forces library "whatever" to be linked as a dll rather + than a static library on Microsoft Windows: replace the WHATEVER + part of the macro name with the name of the library that you want + to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK + or BOOST_REGEX_DYN_LINK + etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may only + be dynamically linked (Boost.Threads for example), in these cases + this macro is unsupported. +

              -

              - BOOST_ALL_NO_LIB -

              +

              + BOOST_ALL_NO_LIB +

              -

              - Tells the config system not to automatically select which libraries - to link against. Normally if a compiler supports #pragma lib, then - the correct library build variant will be automatically selected - and linked against, simply by the act of including one of that - library's headers. This macro turns that feature off. -

              +

              + Tells the config system not to automatically select which libraries + to link against. Normally if a compiler supports #pragma lib, then + the correct library build variant will be automatically selected + and linked against, simply by the act of including one of that library's + headers. This macro turns that feature off. +

              -

              - BOOST_WHATEVER_NO_LIB -

              +

              + BOOST_WHATEVER_NO_LIB +

              -

              - Tells the config system not to automatically select which library - to link against for library "whatever", replace WHATEVER - in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally - if a compiler supports #pragma - lib, then the correct - library build variant will be automatically selected and linked - against, simply by the act of including one of that library's headers. - This macro turns that feature off. -

              +

              + Tells the config system not to automatically select which library + to link against for library "whatever", replace WHATEVER + in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally if + a compiler supports #pragma + lib, then the correct library + build variant will be automatically selected and linked against, + simply by the act of including one of that library's headers. This + macro turns that feature off. +

              -

              - BOOST_LIB_DIAGNOSTIC -

              +

              + BOOST_LIB_DIAGNOSTIC +

              -

              - Causes the auto-linking code to output diagnostic messages indicating - the name of the library that is selected for linking. -

              +

              + Causes the auto-linking code to output diagnostic messages indicating + the name of the library that is selected for linking. +

              -

              - BOOST_LIB_TOOLSET -

              +

              + BOOST_LIB_TOOLSET +

              -

              - Overrides the name of the toolset part of the name of library being - linked to; note if defined this must be defined to a quoted string - literal, for example "abc". -

              +

              + Overrides the name of the toolset part of the name of library being + linked to; note if defined this must be defined to a quoted string + literal, for example "abc". +

              -
              +

              Advanced configuration usage @@ -728,7 +726,7 @@

              The following usage examples represent just a few of the possibilities:

              -
              +

              Example 1, creating our own frozen configuration @@ -760,7 +758,7 @@ yet supported by boost.

              -
              +

              Example 2: skipping files that you don't need @@ -779,7 +777,7 @@ a dependency on two boost headers.

              -
              +
              -
              +

              Testing the boost configuration @@ -810,119 +808,119 @@ -

              - File -

              +

              + File +

              -

              - Description -

              +

              + Description +

              -

              - config_info.cpp -

              +

              + config_info.cpp +

              -

              - Prints out a detailed description of your compiler/standard library/platform - setup, plus your current boost configuration. The information provided - by this program useful in setting up the boost configuration files. - If you report that boost is incorrectly configured for your compiler/library/platform - then please include the output from this program when reporting - the changes required. -

              +

              + Prints out a detailed description of your compiler/standard library/platform + setup, plus your current boost configuration. The information provided + by this program useful in setting up the boost configuration files. + If you report that boost is incorrectly configured for your compiler/library/platform + then please include the output from this program when reporting the + changes required. +

              -

              - config_test.cpp -

              +

              + config_test.cpp +

              -

              - A monolithic test program that includes most of the individual - test cases. This provides a quick check to see if boost is correctly - configured for your compiler/library/platform. -

              +

              + A monolithic test program that includes most of the individual test + cases. This provides a quick check to see if boost is correctly configured + for your compiler/library/platform. +

              -

              - limits_test.cpp -

              +

              + limits_test.cpp +

              -

              - Tests your standard library's std::numeric_limits - implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). - This test file fails with most versions of numeric_limits, mainly - due to the way that some compilers treat NAN's and infinity. -

              +

              + Tests your standard library's std::numeric_limits + implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). This + test file fails with most versions of numeric_limits, mainly due + to the way that some compilers treat NAN's and infinity. +

              -

              - no_*pass.cpp -

              +

              + no_*pass.cpp +

              -

              - Individual compiler defect test files. Each of these should compile, - if one does not then the corresponding BOOST_NO_XXX - macro needs to be defined - see each test file for specific details. -

              +

              + Individual compiler defect test files. Each of these should compile, + if one does not then the corresponding BOOST_NO_XXX + macro needs to be defined - see each test file for specific details. +

              -

              - no_*fail.cpp -

              +

              + no_*fail.cpp +

              -

              - Individual compiler defect test files. Each of these should not - compile, if one does then the corresponding BOOST_NO_XXX - macro is defined when it need not be - see each test file for specific - details. -

              +

              + Individual compiler defect test files. Each of these should not compile, + if one does then the corresponding BOOST_NO_XXX + macro is defined when it need not be - see each test file for specific + details. +

              -

              - has_*pass.cpp -

              +

              + has_*pass.cpp +

              -

              - Individual feature test files. If one of these does not compile - then the corresponding BOOST_HAS_XXX - macro is defined when it should not be - see each test file for - specific details. -

              +

              + Individual feature test files. If one of these does not compile then + the corresponding BOOST_HAS_XXX + macro is defined when it should not be - see each test file for specific + details. +

              -

              - has_*fail.cpp -

              +

              + has_*fail.cpp +

              -

              - Individual feature test files. If one of these does compile then - the corresponding BOOST_HAS_XXX - macro can be safely defined - see each test file for specific details. -

              +

              + Individual feature test files. If one of these does compile then + the corresponding BOOST_HAS_XXX + macro can be safely defined - see each test file for specific details. +

              @@ -962,7 +960,7 @@

              - +

              Last revised: May 22, 2010 at 12:50:36 GMT

              Last revised: May 27, 2010 at 08:46:14 GMT


              diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 94dd204f..3acadc68 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -582,7 +582,7 @@ deleted (`= delete`) functions. explicit conversion operators (`explicit operator T()`). ]] [[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support -explicit instantiation declarations for templates (`explicit template`). +explicit instantiation forward declarations for templates (`extern template ...`). ]] [[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support default template arguments for function templates. @@ -1080,3 +1080,4 @@ match that used to create the libraries via bjam 's install rules. [endsect] + From 915cd05f0e24c0873d52bc1b399ff6d09398684f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 30 May 2010 17:24:45 +0000 Subject: [PATCH 191/435] Change regex to make use of new Boost.Config macros. [SVN r62331] --- include/boost/config/compiler/common_edg.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index bb442a22..cb283376 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -59,10 +59,12 @@ // // See above for BOOST_NO_LONG_LONG // +#if (__EDG_VERSION__ < 310) +# define BOOST_NO_EXTERN_TEMPLATE +#endif #if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) // No support for initializer lists # define BOOST_NO_INITIALIZER_LISTS -# define BOOST_NO_EXTERN_TEMPLATE #endif #define BOOST_NO_AUTO_DECLARATIONS From 1f0f1c2dcf82bb37d34b75dfce3125dca2820824 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 30 May 2010 17:31:09 +0000 Subject: [PATCH 192/435] Update link_test to check that separate file template instantiation and export works as expected. [SVN r62332] --- test/link/Jamfile.v2 | 3 +++ test/link/link_test.cpp | 38 +++++++++++++++++++++++++++++++++----- test/link/link_test.hpp | 37 ++++++++++++++++++++++++++++++++++--- test/link/main.cpp | 4 ++++ test/link/test/Jamfile.v2 | 6 ++++-- 5 files changed, 78 insertions(+), 10 deletions(-) diff --git a/test/link/Jamfile.v2 b/test/link/Jamfile.v2 index 9e676e8e..c5da6c29 100644 --- a/test/link/Jamfile.v2 +++ b/test/link/Jamfile.v2 @@ -14,3 +14,6 @@ lib link_test : link_test.cpp debug release ; +run main.cpp link_test : : : BOOST_DYN_LINK=1 BOOST_CONFIG_NO_LIB shared shared single : link_test_test ; + + diff --git a/test/link/link_test.cpp b/test/link/link_test.cpp index f0a66263..be80bfcd 100644 --- a/test/link/link_test.cpp +++ b/test/link/link_test.cpp @@ -9,6 +9,8 @@ #define BOOST_CONFIG_SOURCE #include "link_test.hpp" +#include +#include bool BOOST_CONFIG_DECL check_options( bool m_dyn_link, @@ -17,10 +19,36 @@ bool BOOST_CONFIG_DECL check_options( bool m_debug, bool m_stlp_debug) { - return (m_dyn_link == dyn_link) - && (m_dyn_rtl == dyn_rtl) - && (m_has_threads == has_threads) - && (m_debug == debug) - && (m_stlp_debug == stl_debug); + if(m_dyn_link != dyn_link) + { + std::cout << "Dynamic link options do not match" << std::endl; + std::cout << "Application setting = " << m_dyn_link << " Library setting = " << dyn_link << std::endl; + return false; + } + if(m_dyn_rtl != dyn_rtl) + { + std::cout << "Runtime library options do not match" << std::endl; + std::cout << "Application setting = " << m_dyn_rtl << " Library setting = " << dyn_rtl << std::endl; + return false; + } + if(m_has_threads != has_threads) + { + std::cout << "Threading options do not match" << std::endl; + std::cout << "Application setting = " << m_has_threads << " Library setting = " << has_threads << std::endl; + return false; + } + if(m_debug != debug) + { + std::cout << "Debug options do not match" << std::endl; + std::cout << "Application setting = " << m_debug << " Library setting = " << debug << std::endl; + return false; + } + if(m_stlp_debug != stl_debug) + { + std::cout << "STLPort debug options do not match" << std::endl; + std::cout << "Application setting = " << m_stlp_debug << " Library setting = " << stl_debug << std::endl; + return false; + } + return true; } diff --git a/test/link/link_test.hpp b/test/link/link_test.hpp index 16f91bf2..8d6333bb 100644 --- a/test/link/link_test.hpp +++ b/test/link/link_test.hpp @@ -44,11 +44,11 @@ static const bool stl_debug = false; // // set up import and export options: // -#if defined(BOOST_HAS_DECLSPEC) && defined(BOOST_DYN_LINK) +#if defined(BOOST_DYN_LINK) # ifdef BOOST_CONFIG_SOURCE -# define BOOST_CONFIG_DECL __declspec(dllexport) +# define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT # else -# define BOOST_CONFIG_DECL __declspec(dllimport) +# define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT # endif #endif #ifndef BOOST_CONFIG_DECL @@ -73,5 +73,36 @@ bool BOOST_CONFIG_DECL check_options( # include #endif +#ifndef BOOST_NO_EXTERN_TEMPLATE + +template +T test_free_proc(T v) +{ + return v; +} + +template +struct tester +{ + static int test(); +}; + +template +int tester::test() +{ + return 0; +} + +#ifdef BOOST_CONFIG_SOURCE +template BOOST_SYMBOL_EXPORT int test_free_proc(int); +template BOOST_SYMBOL_EXPORT int tester::test(); +#else +extern template BOOST_SYMBOL_IMPORT int test_free_proc(int); +extern template BOOST_SYMBOL_IMPORT int tester::test(); +#endif + +#endif // BOOST_NO_EXTERN_TEMPLATE + #endif // BOOST_LINK_TEST_HPP + diff --git a/test/link/main.cpp b/test/link/main.cpp index 06643eb5..3926684a 100644 --- a/test/link/main.cpp +++ b/test/link/main.cpp @@ -9,6 +9,10 @@ int main() { +#ifndef BOOST_NO_EXTERN_TEMPLATE + test_free_proc(0); + tester::test(); +#endif return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1; } diff --git a/test/link/test/Jamfile.v2 b/test/link/test/Jamfile.v2 index 234da7cc..22668af2 100644 --- a/test/link/test/Jamfile.v2 +++ b/test/link/test/Jamfile.v2 @@ -69,13 +69,14 @@ autolink-lib link_test : ../link_test.cpp : ; + explicit link_test ; run ../main.cpp link_test - : : : msvc-8.0:no static static single debug : link_test_ssd ; + : : : msvc-8.0:no msvc-9.0:no msvc-10.0:no static static single debug : link_test_ssd ; run ../main.cpp link_test - : : : msvc-8.0:no static static single release : link_test_ssr ; + : : : msvc-8.0:no msvc-9.0:no msvc-10.0:no static static single release : link_test_ssr ; run ../main.cpp link_test : : : static static multi debug : link_test_smd ; @@ -113,3 +114,4 @@ run ../main.cpp link_test + From 4d398922b4801956a59d58f73ae2636986a67b55 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 4 Jun 2010 12:37:44 +0000 Subject: [PATCH 193/435] Add new config macro for . Update config accordingly. Fixes #4274. [SVN r62425] --- include/boost/config/compiler/nvcc.hpp | 1 + include/boost/config/compiler/visualc.hpp | 3 ++- include/boost/config/stdlib/dinkumware.hpp | 1 + include/boost/config/stdlib/libcomo.hpp | 1 + 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 + test/all/Jamfile.v2 | 5 ++++- test/config_info.cpp | 2 ++ test/config_test.cpp | 12 +++++++++++- 14 files changed, 29 insertions(+), 3 deletions(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index 7d831af8..e31c3e28 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -66,6 +66,7 @@ #define BOOST_NO_0X_HDR_TYPE_TRAITS #define BOOST_NO_0X_HDR_TUPLE #define BOOST_NO_0X_HDR_THREAD +#define BOOST_NO_0X_HDR_TYPEINDEX #define BOOST_NO_0X_HDR_SYSTEM_ERROR #define BOOST_NO_0X_HDR_REGEX #define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 2f89519e..a862570f 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -68,7 +68,6 @@ # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS -# define BOOST_NO_EXTERN_TEMPLATE // TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)? # if (_MSC_VER > 1200) # define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS @@ -80,6 +79,8 @@ // although a conforming signature for swprint exists in VC7.1 // it appears not to actually work: # define BOOST_NO_SWPRINTF +// Our extern template tests also fail for this compiler: +# define BOOST_NO_EXTERN_TEMPLATE #endif #if defined(UNDER_CE) diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 5d044363..ea8faf14 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -106,6 +106,7 @@ # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET # define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_TYPEINDEX #endif #if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 06731e32..97a39f3e 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -54,6 +54,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 6a57319f..a9cf7c8a 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -100,6 +100,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_0X_HDR_TYPEINDEX #endif // C++0x headers in GCC 4.4.0 and later diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 7bd50cec..10792cda 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -43,6 +43,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 6bcd232a..beb15de6 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -67,6 +67,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index cba2f54a..830c32ef 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -173,6 +173,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index c505008b..293886bc 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -126,6 +126,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 3dfd529e..bb6fe134 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -221,6 +221,7 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index c8d6d5ad..3504971f 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -33,6 +33,7 @@ # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPE_TRAITS +# define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index e33f87a0..01e90656 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 Fri Apr 09 12:24:54 2010 +# This file was automatically generated on Fri Jun 04 12:51:35 2010 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -229,6 +229,9 @@ test-suite "BOOST_NO_0X_HDR_THREAD" : test-suite "BOOST_NO_0X_HDR_TUPLE" : [ run ../no_0x_hdr_tuple_pass.cpp ] [ compile-fail ../no_0x_hdr_tuple_fail.cpp ] ; +test-suite "BOOST_NO_0X_HDR_TYPEINDEX" : +[ run ../no_0x_hdr_typeindex_pass.cpp ] +[ compile-fail ../no_0x_hdr_typeindex_fail.cpp ] ; test-suite "BOOST_NO_0X_HDR_TYPE_TRAITS" : [ run ../no_0x_hdr_type_traits_pass.cpp ] [ compile-fail ../no_0x_hdr_type_traits_fail.cpp ] ; diff --git a/test/config_info.cpp b/test/config_info.cpp index 62f906b1..a05586d4 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -974,6 +974,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_0X_HDR_SYSTEM_ERROR); PRINT_MACRO(BOOST_NO_0X_HDR_THREAD); PRINT_MACRO(BOOST_NO_0X_HDR_TUPLE); + PRINT_MACRO(BOOST_NO_0X_HDR_TYPEINDEX); PRINT_MACRO(BOOST_NO_0X_HDR_TYPE_TRAITS); PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_MAP); PRINT_MACRO(BOOST_NO_0X_HDR_UNORDERED_SET); @@ -1082,6 +1083,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 30c295d5..22352565 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Apr 09 12:24:54 2010 +// This file was automatically generated on Fri Jun 04 12:51:35 2010 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -112,6 +112,11 @@ namespace boost_no_0x_hdr_thread = empty_boost; #else namespace boost_no_0x_hdr_tuple = empty_boost; #endif +#ifndef BOOST_NO_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +namespace boost_no_0x_hdr_typeindex = empty_boost; +#endif #ifndef BOOST_NO_0X_HDR_TYPE_TRAITS #include "boost_no_0x_hdr_type_traits.ipp" #else @@ -1196,6 +1201,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_0X_HDR_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_0x_hdr_typeindex::test()) + { + std::cerr << "Failed test for BOOST_NO_0X_HDR_TYPEINDEX at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_0x_hdr_type_traits::test()) { std::cerr << "Failed test for BOOST_NO_0X_HDR_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl; From 160db0eaa6bfec5e81bf68472f3f50af4600c74b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 4 Jun 2010 15:51:51 +0000 Subject: [PATCH 194/435] Add missing files from last commit. [SVN r62427] --- test/boost_no_0x_hdr_typeindex.ipp | 25 ++++++++++++++++++++ test/no_0x_hdr_typeindex_fail.cpp | 37 ++++++++++++++++++++++++++++++ test/no_0x_hdr_typeindex_pass.cpp | 37 ++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 test/boost_no_0x_hdr_typeindex.ipp create mode 100644 test/no_0x_hdr_typeindex_fail.cpp create mode 100644 test/no_0x_hdr_typeindex_pass.cpp diff --git a/test/boost_no_0x_hdr_typeindex.ipp b/test/boost_no_0x_hdr_typeindex.ipp new file mode 100644 index 00000000..b0555e7b --- /dev/null +++ b/test/boost_no_0x_hdr_typeindex.ipp @@ -0,0 +1,25 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_0X_HDR_TYPEINDEX +// TITLE: C++0x header unavailable +// DESCRIPTION: The standard library does not supply C++0x header + +#include + +namespace boost_no_0x_hdr_typeindex { + +int test() +{ + std::type_index t1 = typeid(int); + std::type_index t2 = typeid(double); + std::hash h; + return (t1 != t2) && (h(t1) != h(t2)) ? 0 : 1; +} + +} diff --git a/test/no_0x_hdr_typeindex_fail.cpp b/test/no_0x_hdr_typeindex_fail.cpp new file mode 100644 index 00000000..83e903d3 --- /dev/null +++ b/test/no_0x_hdr_typeindex_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 04 12:51:34 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPEINDEX +// This file should not compile, if it does then +// BOOST_NO_0X_HDR_TYPEINDEX should not be defined. +// See file boost_no_0x_hdr_typeindex.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_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_typeindex::test(); +} + diff --git a/test/no_0x_hdr_typeindex_pass.cpp b/test/no_0x_hdr_typeindex_pass.cpp new file mode 100644 index 00000000..52d38440 --- /dev/null +++ b/test/no_0x_hdr_typeindex_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Fri Jun 04 12:51:34 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_0X_HDR_TYPEINDEX +// This file should compile, if it does not then +// BOOST_NO_0X_HDR_TYPEINDEX should be defined. +// See file boost_no_0x_hdr_typeindex.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_0X_HDR_TYPEINDEX +#include "boost_no_0x_hdr_typeindex.ipp" +#else +namespace boost_no_0x_hdr_typeindex = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_0x_hdr_typeindex::test(); +} + From 5f838e66a547b5b98fd4b29fbdcb5fd86aeff4ad Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 7 Jun 2010 11:56:57 +0000 Subject: [PATCH 195/435] typeindex is not yet supported. [SVN r62507] --- include/boost/config/stdlib/libstdcpp3.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index a9cf7c8a..815d605c 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -100,7 +100,6 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET -# define BOOST_NO_0X_HDR_TYPEINDEX #endif // C++0x headers in GCC 4.4.0 and later @@ -124,5 +123,6 @@ # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS # define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_TYPEINDEX // --- end --- From f3cefbd8a3eae803df863e94341b055aa40c1a48 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 9 Jun 2010 15:45:50 +0000 Subject: [PATCH 196/435] Disable all C++0x features in GCC-XML for now. Fixes #4324. [SVN r62666] --- include/boost/config/compiler/gcc_xml.hpp | 25 +++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 5dd67c76..7f884b19 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -25,6 +25,31 @@ // #define BOOST_HAS_LONG_LONG +// C++0x features: +// +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_NULLPTR +# define BOOST_NO_TEMPLATE_ALIASES +# define BOOST_NO_DECLTYPE +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_LAMBDAS +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_UNICODE_LITERALS + #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ From 3f189bf191e9bc5d780f539bdc6cac5c1127cfb8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 11 Jun 2010 11:21:42 +0000 Subject: [PATCH 197/435] Add BOOST_NO_0X_HDR_TYPEINDEX. [SVN r62793] --- doc/html/boost_config/boost_macro_reference.html | 12 ++++++++++++ doc/html/index.html | 4 ++-- doc/macro_reference.qbk | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index ecf1cccc..61b40693 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -2468,6 +2468,18 @@ + +

              + BOOST_NO_0X_HDR_TYPEINDEX +

              + + +

              + The standard library does not provide header <typeindex>. +

              + + +

              BOOST_NO_0X_HDR_TYPE_TRAITS diff --git a/doc/html/index.html b/doc/html/index.html index 045eaa57..a776e9bf 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

              -

              +

              Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

              @@ -960,7 +960,7 @@
              - +

              Last revised: May 27, 2010 at 08:46:14 GMT

              Last revised: June 11, 2010 at 11:20:15 GMT


              diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 3acadc68..f9d9fcc3 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -546,6 +546,7 @@ that are not yet supported by a particular compiler or library. [[`BOOST_NO_0X_HDR_SYSTEM_ERROR`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_THREAD`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_TUPLE`][The standard library does not provide header .]] +[[`BOOST_NO_0X_HDR_TYPEINDEX`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_TYPE_TRAITS`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_UNORDERED_MAP`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_UNORDERED_SET`][The standard library does not provide header .]] From 8a4e26e37872887eb5646cc66e7193fba1616b0c Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Fri, 11 Jun 2010 14:16:38 +0000 Subject: [PATCH 198/435] Remove macros better handled by config/stdlib/libstdcp3 [SVN r62800] --- include/boost/config/platform/cygwin.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 41fcaa10..5627dd60 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -8,9 +8,6 @@ // cygwin specific config options: #define BOOST_PLATFORM "Cygwin" -#define BOOST_NO_CWCTYPE -#define BOOST_NO_CWCHAR -#define BOOST_NO_SWPRINTF #define BOOST_HAS_DIRENT_H #define BOOST_HAS_LOG1P #define BOOST_HAS_EXPM1 From 9a30ee01463288dd821b6bf99a26abdf7e544921 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 14 Jun 2010 21:18:57 +0000 Subject: [PATCH 199/435] Clang passes all value-initialization tests now [SVN r62950] --- include/boost/config/compiler/clang.hpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 7aac8c35..85f4484d 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -53,13 +53,6 @@ // them is wrong. #define BOOST_NO_EXTERN_TEMPLATE -// Clang version 2.0 (trunk 103769) does not yet properly -// value-initialize objects of a pointer-to-member type, -// as was reported by Christopher Jefferson in May 2010, Bug 7139, -// "ptr to member not zeroed", http://llvm.org/bugs/show_bug.cgi?id=7139 -// (Niels Dekker, LKEB, May 2010) -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION - #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ #endif From fc0159a81bc68e0e614a4e5159239bbf9522e938 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 20 Jun 2010 18:00:48 +0000 Subject: [PATCH 200/435] Update various libraries' documentation build. Mostly to use the images and css files under doc/src instead of doc/html, usually be deleting the settings in order to use the defaults. Also add 'boost.root' to some builds in order to fix links which rely on it. [SVN r63146] --- doc/Jamfile.v2 | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 82109f08..12708f6a 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -29,9 +29,6 @@ boostbook standalone toc.section.depth=2 chunk.section.depth=1 boost.root=../../../.. - boost.libraries=../../../../libs/libraries.htm - navig.graphics=1 - html.stylesheet=../../../../doc/html/boostbook.css # PDF Options: pdf:xep.extensions=1 From e5ab506c4c28ed3b07c6dab9b1d98ea8052d80eb Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 22 Jun 2010 21:49:44 +0000 Subject: [PATCH 201/435] Removed BOOST_NO_COMPLETE_VALUE_INITIALIZATION from Apple build of GCC (trunk), based on test results and feedback from Chris Jefferson. see #4080. [SVN r63249] --- include/boost/config/compiler/gcc.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 3ba45ddd..bcad1533 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -80,7 +80,12 @@ // reported by Michael Elizabeth Chastain in 2007, // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4) // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues -#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +// Note that these issues also appear to be fixed in Apple's g++, according to +// test results from the minion-clang/darwin-4.2.1 toolset, GNU 4.2.1 Apple +// build 5659, ran by Christopher Jefferson. (Niels Dekker, LKEB, June 2010.) +# if !defined(__APPLE_CC__) || (__APPLE_CC__ < 5659) +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# endif #endif #if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) From 345c804440c97bc0e152e30dc411045a9845b938 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 27 Jun 2010 11:14:54 +0000 Subject: [PATCH 202/435] Assumption that Apple build 5659 of GNU 4.2.1 patched all value-initialization compiler bugs appears wrong, according to minion-clang-boost-bin-v2-libs-config-test-config_test-test-darwin-4-2-1-debug.html. Reverted [63249], see #4080. [SVN r63379] --- include/boost/config/compiler/gcc.hpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index bcad1533..3ba45ddd 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -80,12 +80,7 @@ // reported by Michael Elizabeth Chastain in 2007, // http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4) // See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues -// Note that these issues also appear to be fixed in Apple's g++, according to -// test results from the minion-clang/darwin-4.2.1 toolset, GNU 4.2.1 Apple -// build 5659, ran by Christopher Jefferson. (Niels Dekker, LKEB, June 2010.) -# if !defined(__APPLE_CC__) || (__APPLE_CC__ < 5659) -# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION -# endif +#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION #endif #if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS) From e65ec6d1692c2bc905ee9dd58905ed6dc507a9b4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 29 Jun 2010 16:02:13 +0000 Subject: [PATCH 203/435] Patch for macro redefinitions. Fixes #4385. [SVN r63439] --- include/boost/config/compiler/gcc.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 3ba45ddd..54f1bb98 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -135,8 +135,12 @@ // #if __GNUC__ * 100 + __GNUC_MINOR__ >= 403 # ifndef __GXX_RTTI -# define BOOST_NO_TYPEID -# define BOOST_NO_RTTI +# ifndef BOOST_NO_TYPEID +# define BOOST_NO_TYPEID +# endif +# ifndef BOOST_NO_RTTI +# define BOOST_NO_RTTI +# endif # endif #endif From 4dc7205bd65609ffe69ec791c84214d97adc47a9 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 1 Jul 2010 22:11:07 +0000 Subject: [PATCH 204/435] Rebuild config documentation. [SVN r63504] --- doc/html/boost_config/acknowledgements.html | 10 +- .../boost_config/boost_macro_reference.html | 3759 +++++++++-------- .../guidelines_for_boost_authors.html | 260 +- doc/html/boost_config/rationale.html | 40 +- doc/html/index.html | 720 ++-- 5 files changed, 2386 insertions(+), 2403 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 347924f4..87d6546a 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -2,8 +2,8 @@ Acknowledgements - - + + @@ -19,9 +19,9 @@
              -PrevUpHome +PrevUpHome
              -
              +
              @@ -55,7 +55,7 @@
              -PrevUpHome +PrevUpHome
              diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 61b40693..b684de83 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -2,8 +2,8 @@ Boost Macro Reference - - + + @@ -20,9 +20,9 @@
              -PrevUpHomeNext +PrevUpHomeNext
              -
              +
              @@ -44,7 +44,7 @@

              -
              +

              Macros that describe defects @@ -62,240 +62,240 @@ -

              - Macro -

              +

              + Macro +

              -

              - Section -

              +

              + Section +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -

              +

              + BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler exibits certain partial specialisation bug - probably - Borland C++ Builder specific. -

              +

              + The compiler exibits certain partial specialisation bug - probably + Borland C++ Builder specific. +

              -

              - BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -

              +

              + BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Argument dependent lookup fails if there is a using declaration for - the symbol being looked up in the current scope. For example, using - boost::get_pointer; prevents ADL from - finding overloads of get_pointer - in namespaces nested inside boost (but not elsewhere). Probably Borland - specific. -

              +

              + Argument dependent lookup fails if there is a using declaration + for the symbol being looked up in the current scope. For example, + using boost::get_pointer; prevents ADL from + finding overloads of get_pointer + in namespaces nested inside boost (but not elsewhere). Probably + Borland specific. +

              -

              - BOOST_NO_ADL_BARRIER -

              +

              + BOOST_NO_ADL_BARRIER +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler locates and searches namespaces that it should *not* - in fact search when performing argument dependent lookup. -

              +

              + The compiler locates and searches namespaces that it should *not* + in fact search when performing argument dependent lookup. +

              -

              - BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -

              +

              + BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Compiler does not implement argument-dependent lookup (also named - Koenig lookup); see std::3.4.2 [basic.koenig.lookup] -

              +

              + Compiler does not implement argument-dependent lookup (also named + Koenig lookup); see std::3.4.2 [basic.koenig.lookup] +

              -

              - BOOST_NO_AUTO_PTR -

              +

              + BOOST_NO_AUTO_PTR +

              -

              - Standard library -

              +

              + Standard library +

              -

              - If the compiler / library supplies non-standard or broken std::auto_ptr. -

              +

              + If the compiler / library supplies non-standard or broken std::auto_ptr. +

              -

              - BOOST_NO_COMPLETE_VALUE_INITIALIZATION -

              +

              + BOOST_NO_COMPLETE_VALUE_INITIALIZATION +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Compiler has not completely implemented value-initialization. See - also The - Utility/Value Init docs -

              +

              + Compiler has not completely implemented value-initialization. See + also The + Utility/Value Init docs +

              -

              - BOOST_NO_CTYPE_FUNCTIONS -

              +

              + BOOST_NO_CTYPE_FUNCTIONS +

              -

              - Platform -

              +

              + Platform +

              -

              - The Platform does not provide functions for the character-classifying - operations <ctype.h> and <cctype>, - only macros. -

              +

              + The Platform does not provide functions for the character-classifying + operations <ctype.h> and <cctype>, + only macros. +

              -

              - BOOST_NO_CV_SPECIALIZATIONS -

              +

              + BOOST_NO_CV_SPECIALIZATIONS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - If template specialisations for cv-qualified types conflict with - a specialisation for a cv-unqualififed type. -

              +

              + If template specialisations for cv-qualified types conflict with + a specialisation for a cv-unqualififed type. +

              -

              - BOOST_NO_CV_VOID_SPECIALIZATIONS -

              +

              + BOOST_NO_CV_VOID_SPECIALIZATIONS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - If template specialisations for cv-void types conflict with a specialisation - for void. -

              +

              + If template specialisations for cv-void types conflict with a specialisation + for void. +

              -

              - BOOST_NO_CWCHAR -

              +

              + BOOST_NO_CWCHAR +

              -

              - Platform -

              +

              + Platform +

              -

              - The Platform does not provide <wchar.h> - and <cwchar>. -

              +

              + The Platform does not provide <wchar.h> + and <cwchar>. +

              -

              - BOOST_NO_CWCTYPE -

              +

              + BOOST_NO_CWCTYPE +

              -

              - Platform -

              +

              + Platform +

              -

              - The Platform does not provide <wctype.h> - and <cwctype>. -

              +

              + The Platform does not provide <wctype.h> + and <cwctype>. +

              -

              - BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -

              +

              + BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler fails to compile a nested class that has a dependent - base class: +

              + The compiler fails to compile a nested class that has a dependent + base class:

              template<typename T>
               struct foo : {
              @@ -303,106 +303,106 @@
                  struct bar : public U {};
               

              - }; -

              + }; +

              -

              - BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -

              +

              + BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Template value parameters cannot have a dependent type, for example: - +

              + Template value parameters cannot have a dependent type, for example: +

              template<class T, typename T::type value> 
               class X { ... };
               

              -

              +

              -

              - BOOST_NO_EXCEPTION_STD_NAMESPACE -

              +

              + BOOST_NO_EXCEPTION_STD_NAMESPACE +

              -

              - Standard Library -

              +

              + Standard Library +

              -

              - The standard library does not put some or all of the contents of - <exception> in namespace std. -

              +

              + The standard library does not put some or all of the contents of + <exception> in namespace std. +

              -

              - BOOST_NO_EXCEPTIONS -

              +

              + BOOST_NO_EXCEPTIONS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support exception handling (this setting is - typically required by many C++ compilers for embedded platforms). - Note that there is no requirement for boost libraries to honor this - configuration setting - indeed doing so may be impossible in some - cases. Those libraries that do honor this will typically abort if - a critical error occurs - you have been warned! -

              +

              + The compiler does not support exception handling (this setting + is typically required by many C++ compilers for embedded platforms). + Note that there is no requirement for boost libraries to honor + this configuration setting - indeed doing so may be impossible + in some cases. Those libraries that do honor this will typically + abort if a critical error occurs - you have been warned! +

              -

              - BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -

              +

              + BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Can only use deduced template arguments when calling function template - instantiations. -

              +

              + Can only use deduced template arguments when calling function template + instantiations. +

              -

              - BOOST_NO_FUNCTION_TEMPLATE_ORDERING -

              +

              + BOOST_NO_FUNCTION_TEMPLATE_ORDERING +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not perform function template ordering or its function - template ordering is incorrect. +

              + The compiler does not perform function template ordering or its + function template ordering is incorrect.

              // #1
               template<class T> void f(T);
              @@ -415,876 +415,875 @@
               f(&bar); // should choose #2.
               

              -

              +

              -

              - BOOST_NO_INCLASS_MEMBER_INITIALIZATION -

              +

              + BOOST_NO_INCLASS_MEMBER_INITIALIZATION +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Compiler violates std::9.4.2/4. -

              +

              + Compiler violates std::9.4.2/4. +

              -

              - BOOST_NO_INTRINSIC_WCHAR_T -

              +

              + BOOST_NO_INTRINSIC_WCHAR_T +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The C++ implementation does not provide wchar_t, - or it is really a synonym for another integral type. Use this symbol - to decide whether it is appropriate to explicitly specialize a template - on wchar_t if there - is already a specialization for other integer types. -

              +

              + The C++ implementation does not provide wchar_t, + or it is really a synonym for another integral type. Use this symbol + to decide whether it is appropriate to explicitly specialize a + template on wchar_t + if there is already a specialization for other integer types. +

              -

              - BOOST_NO_IOSFWD -

              +

              + BOOST_NO_IOSFWD +

              -

              - std lib -

              +

              + std lib +

              -

              - The standard library lacks <iosfwd>. -

              +

              + The standard library lacks <iosfwd>. +

              -

              - BOOST_NO_IOSTREAM -

              +

              + BOOST_NO_IOSTREAM +

              -

              - std lib -

              +

              + std lib +

              -

              - The standard library lacks <iostream>, - <istream> or <ostream>. -

              +

              + The standard library lacks <iostream>, + <istream> or <ostream>. +

              -

              - BOOST_NO_IS_ABSTRACT -

              +

              + BOOST_NO_IS_ABSTRACT +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The C++ compiler does not support SFINAE with abstract types, this - is covered by Core - Language DR337, but is not part of the current standard. - Fortunately most compilers that support SFINAE also support this - DR. -

              +

              + The C++ compiler does not support SFINAE with abstract types, this + is covered by Core + Language DR337, but is not part of the current standard. + Fortunately most compilers that support SFINAE also support this + DR. +

              -

              - BOOST_NO_LIMITS -

              +

              + BOOST_NO_LIMITS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ implementation does not provide the <limits> - header. Never check for this symbol in library code; always include - <boost/limits.hpp>, which guarantees to provide - std::numeric_limits. -

              +

              + The C++ implementation does not provide the <limits> + header. Never check for this symbol in library code; always include + <boost/limits.hpp>, which guarantees to provide + std::numeric_limits. +

              -

              - BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -

              +

              + BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - Constants such as numeric_limits<T>::is_signed - are not available for use at compile-time. -

              +

              + Constants such as numeric_limits<T>::is_signed + are not available for use at compile-time. +

              -

              - BOOST_NO_LONG_LONG_NUMERIC_LIMITS -

              +

              + BOOST_NO_LONG_LONG_NUMERIC_LIMITS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - There is no specialization for numeric_limits<long - long> - and numeric_limits<unsigned - long long>. <boost/limits.hpp> - will then add these specializations as a standard library "fix" - only if the compiler supports the long - long datatype. -

              +

              + There is no specialization for numeric_limits<long + long> + and numeric_limits<unsigned + long long>. <boost/limits.hpp> + will then add these specializations as a standard library "fix" + only if the compiler supports the long + long datatype. +

              -

              - BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -

              +

              + BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support the specialization of individual member - functions of template classes. -

              +

              + The compiler does not support the specialization of individual + member functions of template classes. +

              -

              - BOOST_NO_MEMBER_TEMPLATE_KEYWORD -

              +

              + BOOST_NO_MEMBER_TEMPLATE_KEYWORD +

              -

              - Compiler -

              +

              + Compiler +

              -

              - If the compiler supports member templates, but not the template keyword - when accessing member template classes. -

              +

              + If the compiler supports member templates, but not the template + keyword when accessing member template classes. +

              -

              - BOOST_NO_MEMBER_TEMPLATE_FRIENDS -

              +

              + BOOST_NO_MEMBER_TEMPLATE_FRIENDS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Member template friend syntax (template<class - P> - friend class - frd;) - described in the C++ Standard, 14.5.3, not supported. -

              +

              + Member template friend syntax (template<class + P> + friend class + frd;) + described in the C++ Standard, 14.5.3, not supported. +

              -

              - BOOST_NO_MEMBER_TEMPLATES -

              +

              + BOOST_NO_MEMBER_TEMPLATES +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Member template functions not fully supported. -

              +

              + Member template functions not fully supported. +

              -

              - BOOST_NO_MS_INT64_NUMERIC_LIMITS -

              +

              + BOOST_NO_MS_INT64_NUMERIC_LIMITS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned - __int64>. - <boost/limits.hpp> will then add these specializations - as a standard library "fix", only if the compiler supports - the __int64 datatype. -

              +

              + There is no specialization for numeric_limits<__int64> and numeric_limits<unsigned + __int64>. + <boost/limits.hpp> will then add these specializations + as a standard library "fix", only if the compiler supports + the __int64 datatype. +

              -

              - BOOST_NO_NESTED_FRIENDSHIP -

              +

              + BOOST_NO_NESTED_FRIENDSHIP +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Compiler doesn't allow a nested class to access private members of - its containing class. Probably Borland/CodeGear specific. -

              +

              + Compiler doesn't allow a nested class to access private members + of its containing class. Probably Borland/CodeGear specific. +

              -

              - BOOST_NO_OPERATORS_IN_NAMESPACE -

              +

              + BOOST_NO_OPERATORS_IN_NAMESPACE +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Compiler requires inherited operator friend functions to be defined - at namespace scope, then using'ed to boost. Probably GCC specific. - See <boost/operators.hpp> - for example. -

              +

              + Compiler requires inherited operator friend functions to be defined + at namespace scope, then using'ed to boost. Probably GCC specific. + See <boost/operators.hpp> for example. +

              -

              - BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS -

              +

              + BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not correctly handle partial specializations which - depend upon default arguments in the primary template. -

              +

              + The compiler does not correctly handle partial specializations + which depend upon default arguments in the primary template. +

              -

              - BOOST_NO_POINTER_TO_MEMBER_CONST -

              +

              + BOOST_NO_POINTER_TO_MEMBER_CONST +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not correctly handle pointers to const member functions, - preventing use of these in overloaded function templates. See <boost/functional.hpp> - for example. -

              +

              + The compiler does not correctly handle pointers to const member + functions, preventing use of these in overloaded function templates. + See <boost/functional.hpp> for example. +

              -

              - BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -

              +

              + BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Pointers to members don't work when used as template parameters. -

              +

              + Pointers to members don't work when used as template parameters. +

              -

              - BOOST_NO_PRIVATE_IN_AGGREGATE -

              +

              + BOOST_NO_PRIVATE_IN_AGGREGATE +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler misreads 8.5.1, treating classes as non-aggregate if - they contain private or protected member functions. -

              +

              + The compiler misreads 8.5.1, treating classes as non-aggregate + if they contain private or protected member functions. +

              -

              - BOOST_NO_RTTI -

              +

              + BOOST_NO_RTTI +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler may (or may not) have the typeid operator, but RTTI - on the dynamic type of an object is not supported. -

              +

              + The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. +

              -

              - BOOST_NO_SFINAE -

              +

              + BOOST_NO_SFINAE +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support the "Substitution Failure Is Not - An Error" meta-programming idiom. -

              +

              + The compiler does not support the "Substitution Failure Is + Not An Error" meta-programming idiom. +

              -

              - BOOST_NO_SFINAE_EXPR -

              +

              + BOOST_NO_SFINAE_EXPR +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support usage of SFINAE with arbitrary expressions. -

              +

              + The compiler does not support usage of SFINAE with arbitrary expressions. +

              -

              - BOOST_NO_STD_ALLOCATOR -

              +

              + BOOST_NO_STD_ALLOCATOR +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ standard library does not provide a standards conforming - std::allocator. -

              +

              + The C++ standard library does not provide a standards conforming + std::allocator. +

              -

              - BOOST_NO_STD_DISTANCE -

              +

              + BOOST_NO_STD_DISTANCE +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The platform does not have a conforming version of std::distance. -

              +

              + The platform does not have a conforming version of std::distance. +

              -

              - BOOST_NO_STD_ITERATOR -

              +

              + BOOST_NO_STD_ITERATOR +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ implementation fails to provide the std::iterator - class. -

              +

              + The C++ implementation fails to provide the std::iterator + class. +

              -

              - BOOST_NO_STD_ITERATOR_TRAITS -

              +

              + BOOST_NO_STD_ITERATOR_TRAITS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The compiler does not provide a standard compliant implementation - of std::iterator_traits. Note that the - compiler may still have a non-standard implementation. -

              +

              + The compiler does not provide a standard compliant implementation + of std::iterator_traits. Note that the + compiler may still have a non-standard implementation. +

              -

              - BOOST_NO_STD_LOCALE -

              +

              + BOOST_NO_STD_LOCALE +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks std::locale. -

              +

              + The standard library lacks std::locale. +

              -

              - BOOST_NO_STD_MESSAGES -

              +

              + BOOST_NO_STD_MESSAGES +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks a conforming std::messages - facet. -

              +

              + The standard library lacks a conforming std::messages + facet. +

              -

              - BOOST_NO_STD_MIN_MAX -

              +

              + BOOST_NO_STD_MIN_MAX +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ standard library does not provide the min() and max() template functions that should - be in <algorithm>. -

              +

              + The C++ standard library does not provide the min() and max() template functions that should + be in <algorithm>. +

              -

              - BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -

              +

              + BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +

              -

              - Standard library -

              +

              + Standard library +

              -

              - Defined if the standard library's output iterators are not assignable. -

              +

              + Defined if the standard library's output iterators are not assignable. +

              -

              - BOOST_NO_STD_TYPEINFO -

              +

              + BOOST_NO_STD_TYPEINFO +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The <typeinfo> header declares type_info - in the global namespace instead of namespace std. -

              +

              + The <typeinfo> header declares type_info + in the global namespace instead of namespace std. +

              -

              - BOOST_NO_STD_USE_FACET -

              +

              + BOOST_NO_STD_USE_FACET +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks a conforming std::use_facet. -

              +

              + The standard library lacks a conforming std::use_facet. +

              -

              - BOOST_NO_STD_WSTREAMBUF -

              +

              + BOOST_NO_STD_WSTREAMBUF +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, - or buggy. -

              +

              + The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, + or buggy. +

              -

              - BOOST_NO_STD_WSTRING -

              +

              + BOOST_NO_STD_WSTRING +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks std::wstring. -

              +

              + The standard library lacks std::wstring. +

              -

              - BOOST_NO_STDC_NAMESPACE -

              +

              + BOOST_NO_STDC_NAMESPACE +

              -

              - Compiler, Platform -

              +

              + Compiler, Platform +

              -

              - The contents of C++ standard headers for C library functions (the - <c...> headers) have not been placed - in namespace std. This test is difficult - some libraries "fake" - the std C functions by adding using declarations to import them into - namespace std, unfortunately they don't necessarily catch all of - them... -

              +

              + The contents of C++ standard headers for C library functions (the + <c...> headers) have not been placed + in namespace std. This test is difficult - some libraries "fake" + the std C functions by adding using declarations to import them + into namespace std, unfortunately they don't necessarily catch + all of them... +

              -

              - BOOST_NO_STRINGSTREAM -

              +

              + BOOST_NO_STRINGSTREAM +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ implementation does not provide the <sstream> - header. -

              +

              + The C++ implementation does not provide the <sstream> + header. +

              -

              - BOOST_NO_SWPRINTF -

              +

              + BOOST_NO_SWPRINTF +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform does not have a conforming version of swprintf. -

              +

              + The platform does not have a conforming version of swprintf. +

              -

              - BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -

              +

              + BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Class template partial specialization (14.5.4 [temp.class.spec]) - not supported. -

              +

              + Class template partial specialization (14.5.4 [temp.class.spec]) + not supported. +

              -

              - BOOST_NO_TEMPLATED_IOSTREAMS -

              +

              + BOOST_NO_TEMPLATED_IOSTREAMS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library does not provide templated iostream classes. -

              +

              + The standard library does not provide templated iostream classes. +

              -

              - BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -

              +

              + BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library does not provide templated iterator constructors - for its containers. -

              +

              + The standard library does not provide templated iterator constructors + for its containers. +

              -

              - BOOST_NO_TEMPLATE_TEMPLATES -

              +

              + BOOST_NO_TEMPLATE_TEMPLATES +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support template template parameters. -

              +

              + The compiler does not support template template parameters. +

              -

              - BOOST_NO_TYPEID -

              +

              + BOOST_NO_TYPEID +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not support the typeid operator at all. -

              +

              + The compiler does not support the typeid operator at all. +

              -

              - BOOST_NO_TYPENAME_WITH_CTOR -

              +

              + BOOST_NO_TYPENAME_WITH_CTOR +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The typename keyword cannot be used when creating a temporary of - a Dependent type. -

              +

              + The typename keyword cannot be used when creating a temporary of + a Dependent type. +

              -

              - BOOST_NO_UNREACHABLE_RETURN_DETECTION -

              +

              + BOOST_NO_UNREACHABLE_RETURN_DETECTION +

              -

              - Compiler -

              +

              + Compiler +

              -

              - If a return is unreachable, then no return statement should be required, - however some compilers insist on it, while other issue a bunch of - warnings if it is in fact present. -

              +

              + If a return is unreachable, then no return statement should be + required, however some compilers insist on it, while other issue + a bunch of warnings if it is in fact present. +

              -

              - BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -

              +

              + BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler will not accept a using declaration that brings a function - from a typename used as a base class into a derived class if functions - of the same name are present in the derived class. -

              +

              + The compiler will not accept a using declaration that brings a + function from a typename used as a base class into a derived class + if functions of the same name are present in the derived class. +

              -

              - BOOST_NO_USING_TEMPLATE -

              +

              + BOOST_NO_USING_TEMPLATE +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler will not accept a using declaration that imports a template - class or function from another namespace. Originally a Borland specific - problem with imports to/from the global namespace, extended to MSVC6 - which has a specific issue with importing template classes (but not - functions). -

              +

              + The compiler will not accept a using declaration that imports a + template class or function from another namespace. Originally a + Borland specific problem with imports to/from the global namespace, + extended to MSVC6 which has a specific issue with importing template + classes (but not functions). +

              -

              - BOOST_NO_VOID_RETURNS -

              +

              + BOOST_NO_VOID_RETURNS +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler does not allow a void function to return the result - of calling another void function. +

              + The compiler does not allow a void function to return the result + of calling another void function.

              void f() {}
               void g() { return f(); }
               

              -

              +

              @@ -1292,7 +1291,7 @@

              -
              +

              Macros that describe optional features @@ -1309,881 +1308,882 @@ -

              - Macro -

              +

              + Macro +

              -

              - Section -

              +

              + Section +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_HAS_BETHREADS -

              +

              + BOOST_HAS_BETHREADS +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform supports BeOS style threads. -

              +

              + The platform supports BeOS style threads. +

              -

              - BOOST_HAS_CLOCK_GETTIME -

              +

              + BOOST_HAS_CLOCK_GETTIME +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API clock_gettime. -

              +

              + The platform has the POSIX API clock_gettime. +

              -

              - BOOST_HAS_DIRENT_H -

              +

              + BOOST_HAS_DIRENT_H +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX header <dirent.h>. -

              +

              + The platform has the POSIX header <dirent.h>. +

              -

              - BOOST_HAS_EXPM1 -

              +

              + BOOST_HAS_EXPM1 +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the functions expm1, - expm1f and expm1l in <math.h> -

              +

              + The platform has the functions expm1, + expm1f and expm1l in <math.h> +

              -

              - BOOST_HAS_FTIME -

              +

              + BOOST_HAS_FTIME +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the Win32 API GetSystemTimeAsFileTime. -

              +

              + The platform has the Win32 API GetSystemTimeAsFileTime. +

              -

              - BOOST_HAS_GETTIMEOFDAY -

              +

              + BOOST_HAS_GETTIMEOFDAY +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API gettimeofday. -

              +

              + The platform has the POSIX API gettimeofday. +

              -

              - BOOST_HAS_HASH -

              +

              + BOOST_HAS_HASH +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ implementation provides the (SGI) hash_set and hash_map classes. - When defined, BOOST_HASH_SET_HEADER - and BOOST_HASH_LIST_HEADER - will contain the names of the header needed to access hash_set and - hash_map; BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which the two class templates reside. -

              +

              + The C++ implementation provides the (SGI) hash_set and hash_map + classes. When defined, BOOST_HASH_SET_HEADER + and BOOST_HASH_LIST_HEADER + will contain the names of the header needed to access hash_set + and hash_map; BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which the two class templates reside. +

              -

              - BOOST_HAS_LOG1P -

              +

              + BOOST_HAS_LOG1P +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the functions log1p, - log1pf and log1pl in <math.h>. -

              +

              + The platform has the functions log1p, + log1pf and log1pl in <math.h>. +

              -

              - BOOST_HAS_MACRO_USE_FACET -

              +

              + BOOST_HAS_MACRO_USE_FACET +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks a conforming std::use_facet, - but has a macro _USE(loc, Type) that does the job. This is primarily - for the Dinkumware std lib. -

              +

              + The standard library lacks a conforming std::use_facet, + but has a macro _USE(loc, Type) that does the job. This is primarily + for the Dinkumware std lib. +

              -

              - BOOST_HAS_MS_INT64 -

              +

              + BOOST_HAS_MS_INT64 +

              -

              - Compiler -

              +

              + Compiler +

              -

              - The compiler supports the __int64 - data type. -

              +

              + The compiler supports the __int64 + data type. +

              -

              - BOOST_HAS_NANOSLEEP -

              +

              + BOOST_HAS_NANOSLEEP +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API nanosleep. -

              +

              + The platform has the POSIX API nanosleep. +

              -

              - BOOST_HAS_NL_TYPES_H -

              +

              + BOOST_HAS_NL_TYPES_H +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has an <nl_types.h>. -

              +

              + The platform has an <nl_types.h>. +

              -

              - BOOST_HAS_NRVO -

              +

              + BOOST_HAS_NRVO +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Indicated that the compiler supports the named return value optimization - (NRVO). Used to select the most efficient implementation for some - function. See <boost/operators.hpp> for example. -

              +

              + Indicated that the compiler supports the named return value optimization + (NRVO). Used to select the most efficient implementation for some + function. See <boost/operators.hpp> for example. +

              -

              - BOOST_HAS_PARTIAL_STD_ALLOCATOR -

              +

              + BOOST_HAS_PARTIAL_STD_ALLOCATOR +

              -

              - Standard Library -

              +

              + Standard Library +

              -

              - The standard library has a partially conforming std::allocator - class, but without any of the member templates. -

              +

              + The standard library has a partially conforming std::allocator + class, but without any of the member templates. +

              -

              - BOOST_HAS_PTHREAD_DELAY_NP -

              +

              + BOOST_HAS_PTHREAD_DELAY_NP +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API pthread_delay_np. -

              +

              + The platform has the POSIX API pthread_delay_np. +

              -

              - BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -

              +

              + BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API pthread_mutexattr_settype. -

              +

              + The platform has the POSIX API pthread_mutexattr_settype. +

              -

              - BOOST_HAS_PTHREAD_YIELD -

              +

              + BOOST_HAS_PTHREAD_YIELD +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API pthread_yield. -

              +

              + The platform has the POSIX API pthread_yield. +

              -

              - BOOST_HAS_PTHREADS -

              +

              + BOOST_HAS_PTHREADS +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform support POSIX style threads. -

              +

              + The platform support POSIX style threads. +

              -

              - BOOST_HAS_SCHED_YIELD -

              +

              + BOOST_HAS_SCHED_YIELD +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has the POSIX API sched_yield. -

              +

              + The platform has the POSIX API sched_yield. +

              -

              - BOOST_HAS_SGI_TYPE_TRAITS -

              +

              + BOOST_HAS_SGI_TYPE_TRAITS +

              -

              - Compiler, Standard library -

              +

              + Compiler, Standard library +

              -

              - The compiler has native support for SGI style type traits. -

              +

              + The compiler has native support for SGI style type traits. +

              -

              - BOOST_HAS_STDINT_H -

              +

              + BOOST_HAS_STDINT_H +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform has a <stdint.h> -

              +

              + The platform has a <stdint.h> +

              -

              - BOOST_HAS_SLIST -

              +

              + BOOST_HAS_SLIST +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The C++ implementation provides the (SGI) slist class. When defined, - BOOST_SLIST_HEADER - will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE - will provide the namespace in which slist - resides. -

              +

              + The C++ implementation provides the (SGI) slist class. When defined, + BOOST_SLIST_HEADER + will contain the name of the header needed to access slist and BOOST_STD_EXTENSION_NAMESPACE + will provide the namespace in which slist + resides. +

              -

              - BOOST_HAS_STLP_USE_FACET -

              +

              + BOOST_HAS_STLP_USE_FACET +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks a conforming std::use_facet, - but has a workaround class-version that does the job. This is primarily - for the STLport std lib. -

              +

              + The standard library lacks a conforming std::use_facet, + but has a workaround class-version that does the job. This is primarily + for the STLport std lib. +

              -

              - BOOST_HAS_TR1_ARRAY -

              +

              + BOOST_HAS_TR1_ARRAY +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <array>. -

              +

              + The library has a TR1 conforming version of <array>. +

              -

              - BOOST_HAS_TR1_COMPLEX_OVERLOADS -

              +

              + BOOST_HAS_TR1_COMPLEX_OVERLOADS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a version of <complex> - that supports passing scalars to the complex number algorithms. -

              +

              + The library has a version of <complex> + that supports passing scalars to the complex number algorithms. +

              -

              - BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -

              +

              + BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a version of <complex> - that includes the new inverse trig functions from TR1. -

              +

              + The library has a version of <complex> + that includes the new inverse trig functions from TR1. +

              -

              - BOOST_HAS_TR1_REFERENCE_WRAPPER -

              +

              + BOOST_HAS_TR1_REFERENCE_WRAPPER +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has TR1 conforming reference wrappers in <functional>. -

              +

              + The library has TR1 conforming reference wrappers in <functional>. +

              -

              - BOOST_HAS_TR1_RESULT_OF -

              +

              + BOOST_HAS_TR1_RESULT_OF +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming result_of template in <functional>. -

              +

              + The library has a TR1 conforming result_of template in <functional>. +

              -

              - BOOST_HAS_TR1_MEM_FN -

              +

              + BOOST_HAS_TR1_MEM_FN +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming mem_fn function template in <functional>. -

              +

              + The library has a TR1 conforming mem_fn function template in <functional>. +

              -

              - BOOST_HAS_TR1_BIND -

              +

              + BOOST_HAS_TR1_BIND +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming bind function template in <functional>. -

              +

              + The library has a TR1 conforming bind function template in <functional>. +

              -

              - BOOST_HAS_TR1_FUNCTION -

              +

              + BOOST_HAS_TR1_FUNCTION +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming function class template in <functional>. -

              +

              + The library has a TR1 conforming function class template in <functional>. +

              -

              - BOOST_HAS_TR1_HASH -

              +

              + BOOST_HAS_TR1_HASH +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming hash function template in <functional>. -

              +

              + The library has a TR1 conforming hash function template in <functional>. +

              -

              - BOOST_HAS_TR1_SHARED_PTR -

              +

              + BOOST_HAS_TR1_SHARED_PTR +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming shared_ptr - class template in <memory>. -

              +

              + The library has a TR1 conforming shared_ptr + class template in <memory>. +

              -

              - BOOST_HAS_TR1_RANDOM -

              +

              + BOOST_HAS_TR1_RANDOM +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <random>. -

              +

              + The library has a TR1 conforming version of <random>. +

              -

              - BOOST_HAS_TR1_REGEX -

              +

              + BOOST_HAS_TR1_REGEX +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <regex>. -

              +

              + The library has a TR1 conforming version of <regex>. +

              -

              - BOOST_HAS_TR1_TUPLE -

              +

              + BOOST_HAS_TR1_TUPLE +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <tuple>. -

              +

              + The library has a TR1 conforming version of <tuple>. +

              -

              - BOOST_HAS_TR1_TYPE_TRAITS -

              +

              + BOOST_HAS_TR1_TYPE_TRAITS +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <type_traits>. -

              +

              + The library has a TR1 conforming version of <type_traits>. +

              -

              - BOOST_HAS_TR1_UTILITY -

              +

              + BOOST_HAS_TR1_UTILITY +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has the TR1 additions to <utility> - (tuple interface to std::pair). -

              +

              + The library has the TR1 additions to <utility> + (tuple interface to std::pair). +

              -

              - BOOST_HAS_TR1_UNORDERED_MAP -

              +

              + BOOST_HAS_TR1_UNORDERED_MAP +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <unordered_map>. -

              +

              + The library has a TR1 conforming version of <unordered_map>. +

              -

              - BOOST_HAS_TR1_UNORDERED_SET -

              +

              + BOOST_HAS_TR1_UNORDERED_SET +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The library has a TR1 conforming version of <unordered_set>. -

              +

              + The library has a TR1 conforming version of <unordered_set>. +

              -

              - BOOST_HAS_TR1 -

              +

              + BOOST_HAS_TR1 +

              -

              - Standard library -

              +

              + Standard library +

              -

              - Implies all the other BOOST_HAS_TR1_* macros should be set. -

              +

              + Implies all the other BOOST_HAS_TR1_* macros should be set. +

              -

              - BOOST_HAS_THREADS -

              +

              + BOOST_HAS_THREADS +

              -

              - Platform, Compiler -

              +

              + Platform, Compiler +

              -

              - Defined if the compiler, in its current translation mode, supports - multiple threads of execution. -

              +

              + Defined if the compiler, in its current translation mode, supports + multiple threads of execution. +

              -

              - BOOST_HAS_TWO_ARG_USE_FACET -

              +

              + BOOST_HAS_TWO_ARG_USE_FACET +

              -

              - Standard library -

              +

              + Standard library +

              -

              - The standard library lacks a conforming std::use_facet, but has a - two argument version that does the job. This is primarily for the - Rogue Wave std lib. -

              +

              + The standard library lacks a conforming std::use_facet, but has + a two argument version that does the job. This is primarily for + the Rogue Wave std lib. +

              -

              - BOOST_HAS_UNISTD_H -

              +

              + BOOST_HAS_UNISTD_H +

              -

              - Platform -

              +

              + Platform +

              -

              - The Platform provides <unistd.h>. -

              +

              + The Platform provides <unistd.h>. +

              -

              - BOOST_HAS_WINTHREADS -

              +

              + BOOST_HAS_WINTHREADS +

              -

              - Platform -

              +

              + Platform +

              -

              - The platform supports MS Windows style threads. -

              +

              + The platform supports MS Windows style threads. +

              -

              - BOOST_MSVC_STD_ITERATOR -

              +

              + BOOST_MSVC_STD_ITERATOR +

              -

              - Standard library -

              +

              + Standard library +

              -

              - Microsoft's broken version of std::iterator - is being used. This implies that std::iterator - takes no more than two template parameters. -

              +

              + Microsoft's broken version of std::iterator + is being used. This implies that std::iterator + takes no more than two template parameters. +

              -

              - BOOST_MSVC6_MEMBER_TEMPLATES -

              +

              + BOOST_MSVC6_MEMBER_TEMPLATES +

              -

              - Compiler -

              +

              + Compiler +

              -

              - Microsoft Visual C++ 6.0 has enough member template idiosyncrasies - (being polite) that BOOST_NO_MEMBER_TEMPLATES - is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES - is defined to allow compiler specific workarounds. This macro gets - defined automatically if BOOST_NO_MEMBER_TEMPLATES - is not defined - in other words this is treated as a strict subset - of the features required by the standard. -

              +

              + Microsoft Visual C++ 6.0 has enough member template idiosyncrasies + (being polite) that BOOST_NO_MEMBER_TEMPLATES + is defined for this compiler. BOOST_MSVC6_MEMBER_TEMPLATES + is defined to allow compiler specific workarounds. This macro gets + defined automatically if BOOST_NO_MEMBER_TEMPLATES + is not defined - in other words this is treated as a strict subset + of the features required by the standard. +

              -

              - BOOST_HAS_STDINT_H -

              +

              + BOOST_HAS_STDINT_H +

              -

              - Platform -

              +

              + Platform +

              -

              - There are no 1998 C++ Standard headers <stdint.h> - or <cstdint>, although the 1999 C Standard - does include <stdint.h>. If <stdint.h> - is present, <boost/stdint.h> can make good use of it, so a - flag is supplied (signalling presence; thus the default is not present, - conforming to the current C++ standard). -

              +

              + There are no 1998 C++ Standard headers <stdint.h> + or <cstdint>, although the 1999 C Standard + does include <stdint.h>. + If <stdint.h> is present, <boost/stdint.h> + can make good use of it, so a flag is supplied (signalling presence; + thus the default is not present, conforming to the current C++ + standard). +

              -
              +

              Macros that describe possible C++0x features @@ -2200,31 +2200,31 @@ -

              - Macro -

              +

              + Macro +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_HAS_CONCEPTS -

              +

              + BOOST_HAS_CONCEPTS +

              -

              - The compiler supports concepts. -

              +

              + The compiler supports concepts. +

              -
              +

              Macros that describe C++0x features not supported @@ -2240,594 +2240,595 @@ -

              - Macro -

              +

              + Macro +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_NO_0X_HDR_ARRAY -

              +

              + BOOST_NO_0X_HDR_ARRAY +

              -

              - The standard library does not provide header <array>. -

              +

              + The standard library does not provide header <array>. +

              -

              - BOOST_NO_0X_HDR_CHRONO -

              +

              + BOOST_NO_0X_HDR_CHRONO +

              -

              - The standard library does not provide header <chrono>. -

              +

              + The standard library does not provide header <chrono>. +

              -

              - BOOST_NO_0X_HDR_CODECVT -

              +

              + BOOST_NO_0X_HDR_CODECVT +

              -

              - The standard library does not provide header <codecvt>. -

              +

              + The standard library does not provide header <codecvt>. +

              -

              - BOOST_NO_0X_HDR_CONCEPTS -

              +

              + BOOST_NO_0X_HDR_CONCEPTS +

              -

              - The standard library does not provide header <concepts>. -

              +

              + The standard library does not provide header <concepts>. +

              -

              - BOOST_NO_0X_HDR_CONDITION_VARIABLE -

              +

              + BOOST_NO_0X_HDR_CONDITION_VARIABLE +

              -

              - The standard library does not provide header <condition_variable>. -

              +

              + The standard library does not provide header <condition_variable>. +

              -

              - BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -

              +

              + BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +

              -

              - The standard library does not provide header <container_concepts>. -

              +

              + The standard library does not provide header <container_concepts>. +

              -

              - BOOST_NO_0X_HDR_FORWARD_LIST -

              +

              + BOOST_NO_0X_HDR_FORWARD_LIST +

              -

              - The standard library does not provide header <forward_list>. -

              +

              + The standard library does not provide header <forward_list>. +

              -

              - BOOST_NO_0X_HDR_FUTURE -

              +

              + BOOST_NO_0X_HDR_FUTURE +

              -

              - The standard library does not provide header <future>. -

              +

              + The standard library does not provide header <future>. +

              -

              - BOOST_NO_0X_HDR_INITIALIZER_LIST -

              +

              + BOOST_NO_0X_HDR_INITIALIZER_LIST +

              -

              - The standard library does not provide header <initializer_list>. -

              +

              + The standard library does not provide header <initializer_list>. +

              -

              - BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -

              +

              + BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +

              -

              - The standard library does not provide header <iterator_concepts>. -

              +

              + The standard library does not provide header <iterator_concepts>. +

              -

              - BOOST_NO_0X_HDR_MEMORY_CONCEPTS -

              +

              + BOOST_NO_0X_HDR_MEMORY_CONCEPTS +

              -

              - The standard library does not provide header <memory_concepts>. -

              +

              + The standard library does not provide header <memory_concepts>. +

              -

              - BOOST_NO_0X_HDR_MUTEX -

              +

              + BOOST_NO_0X_HDR_MUTEX +

              -

              - The standard library does not provide header <mutex>. -

              +

              + The standard library does not provide header <mutex>. +

              -

              - BOOST_NO_0X_HDR_RANDOM -

              +

              + BOOST_NO_0X_HDR_RANDOM +

              -

              - The standard library does not provide header <random>. -

              +

              + The standard library does not provide header <random>. +

              -

              - BOOST_NO_0X_HDR_RATIO -

              +

              + BOOST_NO_0X_HDR_RATIO +

              -

              - The standard library does not provide header <ratio>. -

              +

              + The standard library does not provide header <ratio>. +

              -

              - BOOST_NO_0X_HDR_REGEX -

              +

              + BOOST_NO_0X_HDR_REGEX +

              -

              - The standard library does not provide header <regex>. -

              +

              + The standard library does not provide header <regex>. +

              -

              - BOOST_NO_0X_HDR_SYSTEM_ERROR -

              +

              + BOOST_NO_0X_HDR_SYSTEM_ERROR +

              -

              - The standard library does not provide header <system_error>. -

              +

              + The standard library does not provide header <system_error>. +

              -

              - BOOST_NO_0X_HDR_THREAD -

              +

              + BOOST_NO_0X_HDR_THREAD +

              -

              - The standard library does not provide header <thread>. -

              +

              + The standard library does not provide header <thread>. +

              -

              - BOOST_NO_0X_HDR_TUPLE -

              +

              + BOOST_NO_0X_HDR_TUPLE +

              -

              - The standard library does not provide header <tuple>. -

              +

              + The standard library does not provide header <tuple>. +

              -

              - BOOST_NO_0X_HDR_TYPEINDEX -

              +

              + BOOST_NO_0X_HDR_TYPEINDEX +

              -

              - The standard library does not provide header <typeindex>. -

              +

              + The standard library does not provide header <typeindex>. +

              -

              - BOOST_NO_0X_HDR_TYPE_TRAITS -

              +

              + BOOST_NO_0X_HDR_TYPE_TRAITS +

              -

              - The standard library does not provide header <type_traits>. -

              +

              + The standard library does not provide header <type_traits>. +

              -

              - BOOST_NO_0X_HDR_UNORDERED_MAP -

              +

              + BOOST_NO_0X_HDR_UNORDERED_MAP +

              -

              - The standard library does not provide header <unordered_map>. -

              +

              + The standard library does not provide header <unordered_map>. +

              -

              - BOOST_NO_0X_HDR_UNORDERED_SET -

              +

              + BOOST_NO_0X_HDR_UNORDERED_SET +

              -

              - The standard library does not provide header <unordered_set>. -

              +

              + The standard library does not provide header <unordered_set>. +

              -

              - BOOST_NO_AUTO_DECLARATIONS -

              +

              + BOOST_NO_AUTO_DECLARATIONS +

              -

              - The compiler does not support type deduction for variables declared - with the auto keyword - (auto var - = ...;). -

              +

              + The compiler does not support type deduction for variables declared + with the auto keyword + (auto var + = ...;). +

              -

              - BOOST_NO_AUTO_MULTIDECLARATIONS -

              +

              + BOOST_NO_AUTO_MULTIDECLARATIONS +

              -

              - The compiler does not support type deduction for multiple variables - declared with the auto - keyword (auto var - = ..., - *ptr - = ...;). -

              +

              + The compiler does not support type deduction for multiple variables + declared with the auto + keyword (auto var + = ..., + *ptr + = ...;). +

              -

              - BOOST_NO_CHAR16_T -

              +

              + BOOST_NO_CHAR16_T +

              -

              - The compiler does not support type char16_t. -

              +

              + The compiler does not support type char16_t. +

              -

              - BOOST_NO_CHAR32_T -

              +

              + BOOST_NO_CHAR32_T +

              -

              - The compiler does not support type char32_t. -

              +

              + The compiler does not support type char32_t. +

              -

              - BOOST_NO_CONCEPTS -

              +

              + BOOST_NO_CONCEPTS +

              -

              - The compiler does not support Concepts. -

              +

              + The compiler does not support Concepts. +

              -

              - BOOST_NO_TEMPLATE_ALIASES -

              +

              + BOOST_NO_TEMPLATE_ALIASES +

              -

              - The compiler does not support template aliases. -

              +

              + The compiler does not support template aliases. +

              -

              - BOOST_NO_CONSTEXPR -

              +

              + BOOST_NO_CONSTEXPR +

              -

              - The compiler does not support constexpr. -

              +

              + The compiler does not support constexpr. +

              -

              - BOOST_NO_DECLTYPE -

              +

              + BOOST_NO_DECLTYPE +

              -

              - The compiler does not support decltype. -

              +

              + The compiler does not support decltype. +

              -

              - BOOST_NO_DEFAULTED_FUNCTIONS -

              +

              + BOOST_NO_DEFAULTED_FUNCTIONS +

              -

              - The compiler does not support defaulted (= - default) functions. -

              +

              + The compiler does not support defaulted (= + default) functions. +

              -

              - BOOST_NO_DELETED_FUNCTIONS -

              +

              + BOOST_NO_DELETED_FUNCTIONS +

              -

              - The compiler does not support deleted (= - delete) functions. -

              +

              + The compiler does not support deleted (= + delete) functions. +

              -

              - BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -

              +

              + BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +

              -

              - The compiler does not support explicit conversion operators (explicit operator - T()). -

              +

              + The compiler does not support explicit conversion operators (explicit operator + T()). +

              -

              - BOOST_NO_EXTERN_TEMPLATE -

              +

              + BOOST_NO_EXTERN_TEMPLATE +

              -

              - The compiler does not support explicit instantiation forward declarations - for templates (extern template ...). -

              +

              + The compiler does not support explicit instantiation forward declarations + for templates (extern template ...). +

              -

              - BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -

              +

              + BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +

              -

              - The compiler does not support default template arguments for function - templates. -

              +

              + The compiler does not support default template arguments for function + templates. +

              -

              - BOOST_NO_INITIALIZER_LISTS -

              +

              + BOOST_NO_INITIALIZER_LISTS +

              -

              - The C++ compiler does not support C++0x initializer lists. -

              +

              + The C++ compiler does not support C++0x initializer lists. +

              -

              - BOOST_NO_LAMBDAS -

              +

              + BOOST_NO_LAMBDAS +

              -

              - The compiler does not support Lambdas. -

              +

              + The compiler does not support Lambdas. +

              -

              - BOOST_NO_LONG_LONG -

              +

              + BOOST_NO_LONG_LONG +

              -

              - The compiler does not support long - long. -

              +

              + The compiler does not support long + long. +

              -

              - BOOST_NO_NULLPTR -

              +

              + BOOST_NO_NULLPTR +

              -

              - The compiler does not support 'nullptr'. -

              +

              + The compiler does not support 'nullptr'. +

              -

              - BOOST_NO_RAW_LITERALS -

              +

              + BOOST_NO_RAW_LITERALS +

              -

              - The compiler does not support raw string literals. -

              +

              + The compiler does not support raw string literals. +

              -

              - BOOST_NO_RVALUE_REFERENCES -

              +

              + BOOST_NO_RVALUE_REFERENCES +

              -

              - The compiler does not support r-value references. -

              +

              + The compiler does not support r-value references. +

              -

              - BOOST_NO_SCOPED_ENUMS -

              +

              + BOOST_NO_SCOPED_ENUMS +

              -

              - The compiler does not support scoped enumerations (enum class). -

              +

              + The compiler does not support scoped enumerations (enum class). +

              -

              - BOOST_NO_STATIC_ASSERT -

              +

              + BOOST_NO_STATIC_ASSERT +

              -

              - The compiler does not support static_assert. -

              +

              + The compiler does not support static_assert. +

              -

              - BOOST_NO_STD_UNORDERD -

              +

              + BOOST_NO_STD_UNORDERD +

              -

              - The standard library does not support <unordered_map> and <unordered_set>. -

              +

              + The standard library does not support <unordered_map> and + <unordered_set>. +

              -

              - BOOST_NO_TEMPLATE_ALIASES -

              +

              + BOOST_NO_TEMPLATE_ALIASES +

              -

              - The compiler does not support template aliases. -

              +

              + The compiler does not support template aliases. +

              -

              - BOOST_NO_UNICODE_LITERALS -

              +

              + BOOST_NO_UNICODE_LITERALS +

              -

              - The compiler does not support Unicode (u8, - u, U) literals. -

              +

              + The compiler does not support Unicode (u8, + u, U) literals. +

              -

              - BOOST_NO_VARIADIC_TEMPLATES -

              +

              + BOOST_NO_VARIADIC_TEMPLATES +

              -

              - The compiler does not support variadic templates. -

              +

              + The compiler does not support variadic templates. +

              @@ -2835,7 +2836,7 @@

              -
              +

              Boost Helper Macros @@ -2851,33 +2852,33 @@ -

              - Macro -

              +

              + Macro +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_WORKAROUND -

              +

              + BOOST_WORKAROUND +

              -

              - This macro is used where a compiler specific workaround is required - that is not otherwise described by one of the other Boost.Config - macros. To use the macro you must first +

              + This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first

              #include <boost/detail/workaround.hpp>
               

              - usage is then: + usage is then:

              #if BOOST_WORKAROUND(MACRONAME, CONDITION)
                  // workaround code goes here...
              @@ -2886,157 +2887,157 @@
               #endif
               

              - where MACRONAME is - a macro that usually describes the version number to be tested against, - and CONDITION is - a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, - <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. -

              -

              - The macro can also be used with BOOST_TESTED_AT - if all current compiler versions exhibit the issue, but the issue - is expected to be fixed at some later point. -

              -

              - For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ - unless the macro BOOST_DETECT_OUTDATED_WORKAROUNDS - is defined, in which case evaluates to (__BORLANDC__ <= - 0x590). -

              -

              - Note: the ultimate source of documentation - for this macro is in boost/detail/workaround.hpp. -

              + where MACRONAME + is a macro that usually describes the version number to be tested + against, and CONDITION + is a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, + <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. +

              +

              + The macro can also be used with BOOST_TESTED_AT + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. +

              +

              + For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ unless + the macro BOOST_DETECT_OUTDATED_WORKAROUNDS + is defined, in which case evaluates to (__BORLANDC__ <= + 0x590). +

              +

              + Note: the ultimate source of documentation + for this macro is in boost/detail/workaround.hpp. +

              -

              - BOOST_DEDUCED_TYPENAME -

              +

              + BOOST_DEDUCED_TYPENAME +

              -

              - Some compilers don't support the use of typename for dependent types - in deduced contexts. This macro expands to nothing on those compilers, - and typename elsewhere. For example, replace: template - <class - T> - void f(T, typename - T::type); - with: template <class T> void - f(T, BOOST_DEDUCED_TYPENAME T::type); -

              +

              + Some compilers don't support the use of typename for dependent + types in deduced contexts. This macro expands to nothing on those + compilers, and typename elsewhere. For example, replace: template <class T> void + f(T, + typename T::type); with: template + <class + T> + void f(T, BOOST_DEDUCED_TYPENAME + T::type); +

              -

              - BOOST_HASH_MAP_HEADER -

              +

              + BOOST_HASH_MAP_HEADER +

              -

              - The header to include to get the SGI hash_map - class. This macro is only available if BOOST_HAS_HASH - is defined. -

              +

              + The header to include to get the SGI hash_map + class. This macro is only available if BOOST_HAS_HASH + is defined. +

              -

              - BOOST_HASH_SET_HEADER -

              +

              + BOOST_HASH_SET_HEADER +

              -

              - The header to include to get the SGI hash_set - class. This macro is only available if BOOST_HAS_HASH - is defined. -

              +

              + The header to include to get the SGI hash_set + class. This macro is only available if BOOST_HAS_HASH + is defined. +

              -

              - BOOST_SLIST_HEADER -

              +

              + BOOST_SLIST_HEADER +

              -

              - The header to include to get the SGI slist - class. This macro is only available if BOOST_HAS_SLIST - is defined. -

              +

              + The header to include to get the SGI slist + class. This macro is only available if BOOST_HAS_SLIST + is defined. +

              -

              - BOOST_STD_EXTENSION_NAMESPACE -

              +

              + BOOST_STD_EXTENSION_NAMESPACE +

              -

              - The namespace used for std library extensions (hashtable classes - etc). -

              +

              + The namespace used for std library extensions (hashtable classes + etc). +

              -

              - BOOST_STATIC_CONSTANT(Type, assignment) -

              +

              + BOOST_STATIC_CONSTANT(Type, assignment) +

              -

              - On compilers which don't allow in-class initialization of static - integral constant members, we must use enums as a workaround if we - want the constants to be available at compile-time. This macro gives - us a convenient way to declare such constants. For example instead - of: +

              + On compilers which don't allow in-class initialization of static + integral constant members, we must use enums as a workaround if + we want the constants to be available at compile-time. This macro + gives us a convenient way to declare such constants. For example + instead of:

              struct foo{
                  static const int value = 2;
               };
               

              - use: + use:

              struct foo{
                  BOOST_STATIC_CONSTANT(int, value = 2);
               };
               

              -

              +

              -

              - BOOST_UNREACHABLE_RETURN(result) -

              +

              + BOOST_UNREACHABLE_RETURN(result) +

              -

              - Normally evaluates to nothing, but evaluates to return x; if the - compiler requires a return, even when it can never be reached. -

              +

              + Normally evaluates to nothing, but evaluates to return x; if the + compiler requires a return, even when it can never be reached. +

              -

              - BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) -

              +

              + BOOST_EXPLICIT_TEMPLATE_TYPE(t) BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v) BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t) BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v) +

              -

              - Some compilers silently "fold" different function template - instantiations if some of the template parameters don't appear in - the function parameter list. For instance: +

              + Some compilers silently "fold" different function template + instantiations if some of the template parameters don't appear + in the function parameter list. For instance:

              #include <iostream>
               #include <ostream>
              @@ -3057,10 +3058,10 @@
               }
               

              - incorrectly outputs 2 2 double double on VC++ - 6. These macros, to be used in the function parameter list, fix the - problem without effects on the calling syntax. For instance, in the - case above write: + incorrectly outputs 2 2 double double on VC++ + 6. These macros, to be used in the function parameter list, fix + the problem without effects on the calling syntax. For instance, + in the case above write:

              template <int n>
               void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
              @@ -3069,105 +3070,105 @@
               void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
               

              - Beware that they can declare (for affected compilers) a dummy defaulted - parameter, so they -

              -

              - a) should be always invoked at the end of the parameter list -

              -

              - b) can't be used if your function - template is multiply declared. -

              -

              - Furthermore, in order to add any needed comma separator, an APPEND_* - version must be used when the macro invocation appears after a normal - parameter declaration or after the invocation of another macro of - this same group. -

              + Beware that they can declare (for affected compilers) a dummy defaulted + parameter, so they +

              +

              + a) should be always invoked at the end of the parameter list +

              +

              + b) can't be used if your function + template is multiply declared. +

              +

              + Furthermore, in order to add any needed comma separator, an APPEND_* + version must be used when the macro invocation appears after a + normal parameter declaration or after the invocation of another + macro of this same group. +

              -

              - BOOST_USE_FACET(Type, - loc) -

              +

              + BOOST_USE_FACET(Type, loc) +

              -

              - When the standard library does not have a comforming std::use_facet there are various workarounds - available, but they differ from library to library. This macro provides - a consistent way to access a locale's facets. For example, replace: - std::use_facet<Type>(loc); - with: BOOST_USE_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_USE_FACET. -

              +

              + When the standard library does not have a comforming std::use_facet there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to access a locale's facets. For example, + replace: std::use_facet<Type>(loc); + with: BOOST_USE_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_USE_FACET. +

              -

              - BOOST_HAS_FACET(Type, - loc) -

              +

              + BOOST_HAS_FACET(Type, loc) +

              -

              - When the standard library does not have a comforming std::has_facet there are various workarounds - available, but they differ from library to library. This macro provides - a consistent way to check a locale's facets. For example, replace: - std::has_facet<Type>(loc); - with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: - prefix to the front of BOOST_HAS_FACET. -

              +

              + When the standard library does not have a comforming std::has_facet there are various workarounds + available, but they differ from library to library. This macro + provides a consistent way to check a locale's facets. For example, + replace: std::has_facet<Type>(loc); + with: BOOST_HAS_FACET(Type, loc); Note do not add a std:: + prefix to the front of BOOST_HAS_FACET. +

              -

              - BOOST_NESTED_TEMPLATE -

              +

              + BOOST_NESTED_TEMPLATE +

              -

              - Member templates are supported by some compilers even though they - can't use the A::template member<U> syntax, as a workaround replace: - typedef typename - A::template rebind<U> binder; with: typedef - typename A::BOOST_NESTED_TEMPLATE - rebind<U> - binder; -

              +

              + Member templates are supported by some compilers even though they + can't use the A::template + member<U> + syntax, as a workaround replace: typedef + typename A::template + rebind<U> + binder; + with: typedef typename + A::BOOST_NESTED_TEMPLATE rebind<U> binder; +

              -

              - BOOST_STRINGIZE(X) -

              +

              + BOOST_STRINGIZE(X) +

              -

              - Converts the parameter X - to a string after macro replacement on X - has been performed. -

              +

              + Converts the parameter X + to a string after macro replacement on X + has been performed. +

              -

              - BOOST_JOIN(X,Y) -

              +

              + BOOST_JOIN(X,Y) +

              -

              - This piece of macro magic joins the two arguments together, even - when one of the arguments is itself a macro (see 16.3.1 in C++ standard). - This is normally used to create a mangled name in combination with - a predefined macro such a __LINE__. -

              +

              + This piece of macro magic joins the two arguments together, even + when one of the arguments is itself a macro (see 16.3.1 in C++ + standard). This is normally used to create a mangled name in combination + with a predefined macro such a __LINE__. +

              @@ -3175,7 +3176,7 @@

              -
              +

              Boost Informational Macros @@ -3192,267 +3193,268 @@ -

              - Macro -

              +

              + Macro +

              -

              - Header -

              +

              + Header +

              -

              - Description -

              +

              + Description +

              -

              - BOOST_VERSION -

              +

              + BOOST_VERSION +

              -

              - <boost/version.hpp> -

              +

              + <boost/version.hpp> +

              -

              - Describes the boost version number in XYYYZZ format such that: (BOOST_VERSION - % 100) is the sub-minor version, ((BOOST_VERSION - / 100) % 1000) - is the minor version, and (BOOST_VERSION / - 100000) - is the major version. -

              +

              + Describes the boost version number in XYYYZZ format such that: + (BOOST_VERSION + % 100) is the sub-minor version, ((BOOST_VERSION + / 100) % 1000) + is the minor version, and (BOOST_VERSION / + 100000) + is the major version. +

              -

              - BOOST_NO_INT64_T -

              +

              + BOOST_NO_INT64_T +

              -

              - <boost/cstdint.hpp> <boost/stdint.h> -

              +

              + <boost/cstdint.hpp> <boost/stdint.h> +

              -

              - Defined if there are no 64-bit integral types: int64_t, - uint64_t etc. -

              +

              + Defined if there are no 64-bit integral types: int64_t, + uint64_t etc. +

              -

              - BOOST_NO_INTEGRAL_INT64_T -

              +

              + BOOST_NO_INTEGRAL_INT64_T +

              -

              - <boost/cstdint.hpp> <boost/stdint.h> -

              +

              + <boost/cstdint.hpp> <boost/stdint.h> +

              -

              - Defined if int64_t - as defined by <boost/cstdint.hpp> is not usable in integral constant - expressions. -

              +

              + Defined if int64_t + as defined by <boost/cstdint.hpp> + is not usable in integral constant expressions. +

              -

              - BOOST_MSVC -

              +

              + BOOST_MSVC +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined if the compiler is really Microsoft Visual C++, as opposed - to one of the many other compilers that also define _MSC_VER. Has the same value as - _MSC_VER. -

              +

              + Defined if the compiler is really Microsoft Visual C++, as opposed + to one of the many other compilers that also define _MSC_VER. Has the same value + as _MSC_VER. +

              -

              - BOOST_MSVC_FULL_VER -

              +

              + BOOST_MSVC_FULL_VER +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes - only has 8 digits), the macro has the form VVMMPPPPP where VV is - the major version number, MM is the minor version number, and PPPPP - is the compiler build number. -

              +

              + Defined to a normalised 9 digit version of _MSC_FULL_VER (which + sometimes only has 8 digits), the macro has the form VVMMPPPPP + where VV is the major version number, MM is the minor version number, + and PPPPP is the compiler build number. +

              -

              - BOOST_INTEL -

              +

              + BOOST_INTEL +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined if the compiler is an Intel compiler, takes the same value - as the compiler version macro. -

              +

              + Defined if the compiler is an Intel compiler, takes the same value + as the compiler version macro. +

              -

              - BOOST_CLANG -

              +

              + BOOST_CLANG +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined to 1 if the compiler is the Clang compiler. -

              +

              + Defined to 1 if the compiler is the Clang compiler. +

              -

              - BOOST_WINDOWS -

              +

              + BOOST_WINDOWS +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined if the Windows platfrom API is available. -

              +

              + Defined if the Windows platfrom API is available. +

              -

              - BOOST_DINKUMWARE_STDLIB -

              +

              + BOOST_DINKUMWARE_STDLIB +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined if the dinkumware standard library is in use, takes the same - value as the Dinkumware library version macro _CPPLIB_VER - if defined, otherwise 1. -

              +

              + Defined if the dinkumware standard library is in use, takes the + same value as the Dinkumware library version macro _CPPLIB_VER if defined, otherwise + 1. +

              -

              - BOOST_NO_WREGEX -

              +

              + BOOST_NO_WREGEX +

              -

              - <boost/regex.hpp> -

              +

              + <boost/regex.hpp> +

              -

              - Defined if the regex library does not support wide character regular - expressions. -

              +

              + Defined if the regex library does not support wide character regular + expressions. +

              -

              - BOOST_COMPILER -

              +

              + BOOST_COMPILER +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined as a string describing the name and version number of the - compiler in use. Mainly for debugging the configuration. -

              +

              + Defined as a string describing the name and version number of the + compiler in use. Mainly for debugging the configuration. +

              -

              - BOOST_STDLIB -

              +

              + BOOST_STDLIB +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined as a string describing the name and version number of the - standard library in use. Mainly for debugging the configuration. -

              +

              + Defined as a string describing the name and version number of the + standard library in use. Mainly for debugging the configuration. +

              -

              - BOOST_PLATFORM -

              +

              + BOOST_PLATFORM +

              -

              - <boost/config.hpp> -

              +

              + <boost/config.hpp> +

              -

              - Defined as a string describing the name of the platform. Mainly for - debugging the configuration. -

              +

              + Defined as a string describing the name of the platform. Mainly + for debugging the configuration. +

              -
              +

              Macros for libraries with separate source code @@ -3469,23 +3471,23 @@ The following macros and helper headers are of use to authors whose libraries include separate source code, and are intended to address several issues:

              -
                -
              • - Controlling shared library symbol visibility -
              • -
              • - Fixing the ABI of the compiled library -
              • -
              • - Selecting which compiled library to link against based upon the compilers - settings -
              • +
                  +
                • + Controlling shared library symbol visibility +
                • +
                • + Fixing the ABI of the compiled library +
                • +
                • + Selecting which compiled library to link against based upon the compilers + settings +

                See Guidelines for Authors of Boost Libraries Containing Separate Source

                -
                +

                Macros controlling shared library symbol visibility @@ -3515,85 +3517,86 @@ -

                - Macro -

                +

                + Macro +

                -

                - Description -

                +

                + Description +

                -

                - BOOST_SYMBOL_EXPORT -

                +

                + BOOST_SYMBOL_EXPORT +

                -

                - Defines the syntax of a C++ language extension that indicates a - symbol is to be exported from a shared library. If the compiler - has no such extension, the macro is defined with no replacement - text. -

                +

                + Defines the syntax of a C++ language extension that indicates + a symbol is to be exported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

                -

                - BOOST_SYMBOL_IMPORT -

                +

                + BOOST_SYMBOL_IMPORT +

                -

                - Defines the syntax of a C++ language extension that indicates a - symbol is to be imported from a shared library. If the compiler - has no such extension, the macro is defined with no replacement - text. -

                +

                + Defines the syntax of a C++ language extension that indicates + a symbol is to be imported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

                -

                - BOOST_SYMBOL_VISIBLE -

                +

                + BOOST_SYMBOL_VISIBLE +

                -

                - Defines the syntax of a C++ language extension that indicates a - symbol is to be globally visible. If the compiler has no such extension, - the macro is defined with no replacement text. Needed for classes - that are not otherwise exported, but are used by RTTI. Examples - include class for objects that will be thrown as exceptions or - used in dynamic_casts, across shared library boundaries. For example, - a header-only exception class might look like this: +

                + Defines the syntax of a C++ language extension that indicates + a symbol is to be globally visible. If the compiler has no such + extension, the macro is defined with no replacement text. Needed + for classes that are not otherwise exported, but are used by + RTTI. Examples include class for objects that will be thrown + as exceptions or used in dynamic_casts, across shared library + boundaries. For example, a header-only exception class might + look like this:

                class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
                 

                - Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception - thrown from a shared library compiled by GCC with the -fvisibility=hidden - option. -

                + Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch + my_exception thrown from a shared library compiled by GCC with + the -fvisibility=hidden option. +

                -

                - BOOST_HAS_DECLSPEC -

                +

                + BOOST_HAS_DECLSPEC +

                -

                - The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of symbols - from shared libraries. Deprecated. This macro is no longer - necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are - now supplied. It is provided to support legacy code. -

                +

                + The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of + symbols from shared libraries. Deprecated. This macro + is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT + are now supplied. It is provided to support legacy code. +

                @@ -3639,7 +3642,7 @@ ...

                -
                +

                ABI Fixing @@ -3697,7 +3700,7 @@ to point to their own prefix/suffix headers if they so wish.

                -
                +

                Automatic library selection @@ -3727,18 +3730,18 @@
                BOOST_LIB_NAME

                - Required: An identifier containing the basename of the library, for - example 'boost_regex'. -

                + Required: An identifier containing the basename of the library, for + example 'boost_regex'. +

                BOOST_DYN_LINK

                - Optional: when set link to dll rather than static library. -

                + Optional: when set link to dll rather than static library. +

                BOOST_LIB_DIAGNOSTIC

                - Optional: when set the header will print out the name of the library - selected (useful for debugging). -

                + Optional: when set the header will print out the name of the library + selected (useful for debugging). +

                @@ -3790,7 +3793,7 @@


                -PrevUpHomeNext +PrevUpHomeNext
                diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index d3acebf8..577bd808 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -2,8 +2,8 @@ Guidelines for Boost Authors - - + + @@ -20,9 +20,9 @@
                -PrevUpHomeNext +PrevUpHomeNext
                -
                +

                Guidelines for Boost Authors @@ -61,49 +61,49 @@

                Note that:

                -
                  -
                • - Boost library implementers are not required to "#include - <boost/config.hpp>", - and are not required in any way to support compilers that do not comply with - the C++ Standard (ISO/IEC 14882). -
                • -
                • - If a library implementer wishes to support some non-conforming compiler, - or to support some platform specific feature, "#include - <boost/config.hpp>" - is the preferred way to obtain configuration information not available from - the standard headers such as <climits>, - etc. -
                • -
                • - If configuration information can be deduced from standard headers such as - <climits>, use those standard headers rather than - <boost/config.hpp>. -
                • -
                • - Boost files that use macros defined in <boost/config.hpp> - should have sensible, standard conforming, default behavior if the macro - is not defined. This means that the starting point for porting <boost/config.hpp> - to a new platform is simply to define nothing at all specific to that platform. - In the rare case where there is no sensible default behavior, an #error message - should describe the problem. -
                • -
                • - If a Boost library implementer wants something added to config.hpp, post - a request on the Boost mailing list. There is no guarantee such a request - will be honored; the intent is to limit the complexity of config.hpp. -
                • -
                • - The intent is to support only compilers which appear on their way to becoming - C++ Standard compliant, and only recent releases of those compilers at that. -
                • -
                • - The intent is not to disable mainstream features now well-supported by the - majority of compilers, such as namespaces, exceptions, RTTI, or templates. -
                • +
                    +
                  • + Boost library implementers are not required to "#include + <boost/config.hpp>", and are not required in any + way to support compilers that do not comply with the C++ Standard (ISO/IEC + 14882). +
                  • +
                  • + If a library implementer wishes to support some non-conforming compiler, + or to support some platform specific feature, "#include + <boost/config.hpp>" is the preferred way to obtain + configuration information not available from the standard headers such + as <climits>, etc. +
                  • +
                  • + If configuration information can be deduced from standard headers such + as <climits>, use those standard headers rather + than <boost/config.hpp>. +
                  • +
                  • + Boost files that use macros defined in <boost/config.hpp> + should have sensible, standard conforming, default behavior if the macro + is not defined. This means that the starting point for porting <boost/config.hpp> to a new platform is simply to define + nothing at all specific to that platform. In the rare case where there + is no sensible default behavior, an #error message should describe the + problem. +
                  • +
                  • + If a Boost library implementer wants something added to config.hpp, + post a request on the Boost mailing list. There is no guarantee such a + request will be honored; the intent is to limit the complexity of config.hpp. +
                  • +
                  • + The intent is to support only compilers which appear on their way to becoming + C++ Standard compliant, and only recent releases of those compilers at + that. +
                  • +
                  • + The intent is not to disable mainstream features now well-supported by + the majority of compilers, such as namespaces, exceptions, RTTI, or templates. +
                  -
                  +

                  Disabling Compiler Warnings @@ -116,21 +116,21 @@

                  Note that:

                  -
                    -
                  • - This header should never be included by - another Boost header, it should only ever be used - by a library source file or a test case. -
                  • -
                  • - The header should be included before you - include any other header. -
                  • -
                  • - This header only disables warnings that are hard or impossible to otherwise - deal with, and which are typically emitted by one compiler only, or in - one compilers own standard library headers. -
                  • +
                      +
                    • + This header should never be included + by another Boost header, it should only ever be + used by a library source file or a test case. +
                    • +
                    • + The header should be included before + you include any other header. +
                    • +
                    • + This header only disables warnings that are hard or impossible to otherwise + deal with, and which are typically emitted by one compiler only, or in + one compilers own standard library headers. +

                    Currently it disables the following warnings: @@ -142,47 +142,47 @@ -

                    - Compiler -

                    +

                    + Compiler +

                    -

                    - Warning -

                    +

                    + Warning +

                    -

                    - Visual C++ 8 and later -

                    +

                    + Visual C++ 8 and later +

                    -

                    - C4996: - Error 'function': was declared deprecated -

                    +

                    + C4996: + Error 'function': was declared deprecated +

                    -

                    - Intel C++ -

                    +

                    + Intel C++ +

                    -

                    - Warning 1786: relates to the use of "deprecated" standard - library functions rather like C4996 in Visual C++. -

                    +

                    + Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++. +

                  -
                  +

                  Adding New Defect Macros @@ -233,57 +233,59 @@ Once the test code is in place in libs/config/test, updating the configuration test system proceeds as:

                  -
                    -
                  • - cd into libs/config/tools and run bjam. - This generates the .cpp - file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, - config_test.cpp and config_info.cpp.

                    -
                  • -
                  • - cd into libs/config/test/all and run bjam - MACRONAME compiler-list, - where MACRONAME is the name of the new macro, and - compiler-list is a space separated - list of compilers to test with.

                    The xxx_pass_test and the - xxx_fail_test should both report **passed**.

                    If MACRONAME is not defined when it should - be defined, xxx_pass_test will not report **passed**. - If MACRONAME is defined when it should not be defined, - xxx_fail_test will not report **passed**.

                    -
                  • -
                  • - cd into libs/config/test and run bjam - config_info config_test - compiler-list. - config_info should build - and run cleanly for all the compilers in compiler-list - while config_test should - fail for those that have the defect, and pass for those that do not. -
                  • +
                      +
                    • + cd into libs/config/tools and run bjam. + This generates the .cpp + file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, + config_test.cpp and config_info.cpp.
                      +
                      +
                    • +
                    • + cd into libs/config/test/all and run bjam + MACRONAME compiler-list, + where MACRONAME is the name of the new macro, and + compiler-list is a space separated + list of compilers to test with.

                      The xxx_pass_test and the + xxx_fail_test should both report **passed**.

                      If MACRONAME + is not defined when it should be defined, xxx_pass_test will not report + **passed**. If MACRONAME + is defined when it should not be defined, xxx_fail_test will not report + **passed**.

                      +
                    • +
                    • + cd into libs/config/test and run bjam + config_info config_test + compiler-list. + config_info should build + and run cleanly for all the compilers in compiler-list + while config_test should + fail for those that have the defect, and pass for those that do not. +

                    Then you should:

                    -
                      -
                    • - Define the defect macro in those config headers that require it. -
                    • -
                    • - Document the macro in this documentation (please do not forget this step!!) -
                    • -
                    • - Commit everything. -
                    • -
                    • - Keep an eye on the regression tests for new failures in Boost.Config caused - by the addition. -
                    • -
                    • - Start using the macro. -
                    • +
                        +
                      • + Define the defect macro in those config headers that require it. +
                      • +
                      • + Document the macro in this documentation (please do not forget this step!!) +
                      • +
                      • + Commit everything. +
                      • +
                      • + Keep an eye on the regression tests for new failures in Boost.Config + caused by the addition. +
                      • +
                      • + Start using the macro. +
                    -
                    +

                    Adding New Feature Test Macros @@ -307,7 +309,7 @@ <unistd.h>).

                    -
                    +

                    Modifying the Boost Configuration Headers @@ -368,7 +370,7 @@
                    -PrevUpHomeNext +PrevUpHomeNext
                    diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 59a53ec9..4be5310f 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -2,8 +2,8 @@ Rationale - - + + @@ -20,9 +20,9 @@
                    -PrevUpHomeNext +PrevUpHomeNext
                    -
                    +
                    @@ -39,7 +39,7 @@ principles from the following article.

                    -
                    +
                    @@ -56,16 +56,10 @@ have nothing to do with each other. Essentially, the traditional solution employed by configuration headers does not conform to the Open-Closed Principle:

                    -
                    -

                    -

                    -

                    - "A module should be open for extension but - closed for modification." -

                    -

                    -

                    -
                    +

                    + "A module should be open for extension but closed + for modification." +

                    Extending a traditional configuration header implies modifying existing code.

                    @@ -78,15 +72,9 @@ of the entire library, and more stable elements of Boost would depend on it. This violates the Stable Dependencies Principle:

                    -
                    -

                    -

                    -

                    - "Depend in the direction of stability." -

                    -

                    -

                    -
                    +

                    + "Depend in the direction of stability." +

                    After even a minor change to a traditional configuration header on one minor platform, almost everything on every platform should be tested if we follow @@ -102,7 +90,7 @@ code must be provided.

                    -
                    +
                    @@ -129,7 +117,7 @@
                    -PrevUpHomeNext +PrevUpHomeNext
                    diff --git a/doc/html/index.html b/doc/html/index.html index a776e9bf..5a390070 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -2,8 +2,8 @@ Boost.Config - - + + @@ -17,8 +17,8 @@ More
                    -
                    Next
                    -
                    +
                    Next
                    +

                    @@ -28,7 +28,7 @@

                    -

                    +

                    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                    @@ -92,7 +92,7 @@
                    Acknowledgements
                    -
                    +
                    -
                    +

                    Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

                    -
                    +

                    The <boost/config.hpp> header @@ -168,14 +168,14 @@

                    -
                    +
                    - + @@ -295,30 +289,30 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

                    -
                      -
                    • -Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp - provided by boost. This option allows only one configure-generated setup; - boost developers should avoid this option, as it incurs the danger of accidentally - committing a configure-modified <boost/config/user.hpp> - to the cvs repository (something you will not be thanked for!). -
                    • -
                    • -Option 2: give the header a more memorable - name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For - example create a new sub-directory <boost-root>/boost/config/user/, and copy the header there; for example - as multithread-gcc-config.hpp. Then, when compiling add the command - line option: -DBOOST_USER_CONFIG="<boost/config/user/multithread-gcc-config.hpp>", - and boost will use the new configuration header. This option allows you - to generate more than one configuration header, and to keep them separate - from the boost source - so that updates to the source do not interfere - with your configuration. -
                    • +
                        +
                      • + Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp + provided by boost. This option allows only one configure-generated setup; + boost developers should avoid this option, as it incurs the danger of + accidentally committing a configure-modified <boost/config/user.hpp> + to the cvs repository (something you will not be thanked for!). +
                      • +
                      • + Option 2: give the header a more memorable + name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For + example create a new sub-directory <boost-root>/boost/config/ user/, and copy the header there; for example + as multithread-gcc-config.hpp. Then, when compiling add the command + line option: -DBOOST_USER_CONFIG="<boost/config/user/multithread-gcc-config.hpp>", + and boost will use the new configuration header. This option allows you + to generate more than one configuration header, and to keep them separate + from the boost source - so that updates to the source do not interfere + with your configuration. +

                    -
                    +

                    User settable options @@ -337,352 +331,354 @@

                    [Important][Important] Important

                    @@ -190,15 +190,9 @@ you will need to cd into <boost-root>/libs/config/ and type:

                    -
                    -

                    -

                    -

                    - sh ./configure -

                    -

                    -

                    -
                    +

                    + sh ./configure +

                    you will see a list of the items being checked as the script works its way through the regression tests. Note that the configure script only really @@ -213,63 +207,63 @@

                    -

                    - Variable -

                    +

                    + Variable +

                    -

                    - Description -

                    +

                    + Description +

                    -

                    - CXX -

                    +

                    + CXX +

                    -

                    - The name of the compiler, for example c++. -

                    +

                    + The name of the compiler, for example c++. +

                    -

                    - CXXFLAGS -

                    +

                    + CXXFLAGS +

                    -

                    - The compiler flags to use, for example -O2. -

                    +

                    + The compiler flags to use, for example -O2. +

                    -

                    - LDFLAGS -

                    +

                    + LDFLAGS +

                    -

                    - The linker flags to use, for example -L/mypath. -

                    +

                    + The linker flags to use, for example -L/mypath. +

                    -

                    - LIBS -

                    +

                    + LIBS +

                    -

                    - Any libraries to link in, for example -lpthread. -

                    +

                    + Any libraries to link in, for example -lpthread. +

                    -

                    - Macro -

                    +

                    + Macro +

                    -

                    - Description -

                    +

                    + Description +

                    -

                    - BOOST_USER_CONFIG -

                    +

                    + BOOST_USER_CONFIG +

                    -

                    - When defined, it should point to the name of the user configuration - file to include prior to any boost configuration files. When not - defined, defaults to <boost/config/user.hpp>. -

                    +

                    + When defined, it should point to the name of the user configuration + file to include prior to any boost configuration files. When not + defined, defaults to <boost/config/user.hpp>. +

                    -

                    - BOOST_COMPILER_CONFIG -

                    +

                    + BOOST_COMPILER_CONFIG +

                    -

                    - When defined, it should point to the name of the compiler configuration - file to use. Defining this cuts out the compiler selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG - to <boost/config/compiler/gcc.hpp>. -

                    +

                    + When defined, it should point to the name of the compiler configuration + file to use. Defining this cuts out the compiler selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG + to <boost/config/compiler/gcc.hpp>. +

                    -

                    - BOOST_STDLIB_CONFIG -

                    +

                    + BOOST_STDLIB_CONFIG +

                    -

                    - When defined, it should point to the name of the standard library - configuration file to use. Defining this cuts out the standard library - selection logic, and eliminates the dependency on the header containing - that logic. For example if you are using STLport, then you could - define BOOST_STDLIB_CONFIG - to <boost/config/stdlib/stlport.hpp>. -

                    +

                    + When defined, it should point to the name of the standard library + configuration file to use. Defining this cuts out the standard + library selection logic, and eliminates the dependency on the header + containing that logic. For example if you are using STLport, then + you could define BOOST_STDLIB_CONFIG + to <boost/config/stdlib/stlport.hpp>. +

                    -

                    - BOOST_PLATFORM_CONFIG -

                    +

                    + BOOST_PLATFORM_CONFIG +

                    -

                    - When defined, it should point to the name of the platform configuration - file to use. Defining this cuts out the platform selection logic, - and eliminates the dependency on the header containing that logic. - For example if you are compiling on linux, then you could define - BOOST_PLATFORM_CONFIG - to <boost/config/platform/linux.hpp>. -

                    +

                    + When defined, it should point to the name of the platform configuration + file to use. Defining this cuts out the platform selection logic, + and eliminates the dependency on the header containing that logic. + For example if you are compiling on linux, then you could define + BOOST_PLATFORM_CONFIG + to <boost/config/platform/linux.hpp>. +

                    -

                    - BOOST_NO_COMPILER_CONFIG -

                    +

                    + BOOST_NO_COMPILER_CONFIG +

                    -

                    - When defined, no compiler configuration file is selected or included, - define when the compiler is fully conformant with the standard, or - where the user header (see BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

                    +

                    + When defined, no compiler configuration file is selected or included, + define when the compiler is fully conformant with the standard, + or where the user header (see BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

                    -

                    - BOOST_NO_STDLIB_CONFIG -

                    +

                    + BOOST_NO_STDLIB_CONFIG +

                    -

                    - When defined, no standard library configuration file is selected - or included, define when the standard library is fully conformant - with the standard, or where the user header (see BOOST_USER_CONFIG), - has had any options necessary added to it, for example by an autoconf - generated configure script. -

                    +

                    + When defined, no standard library configuration file is selected + or included, define when the standard library is fully conformant + with the standard, or where the user header (see BOOST_USER_CONFIG), has had any + options necessary added to it, for example by an autoconf generated + configure script. +

                    -

                    - BOOST_NO_PLATFORM_CONFIG -

                    +

                    + BOOST_NO_PLATFORM_CONFIG +

                    -

                    - When defined, no platform configuration file is selected or included, - define when the platform is fully conformant with the standard (and - has no useful extra features), or where the user header (see BOOST_USER_CONFIG), has had any - options necessary added to it, for example by an autoconf generated - configure script. -

                    +

                    + When defined, no platform configuration file is selected or included, + define when the platform is fully conformant with the standard + (and has no useful extra features), or where the user header (see + BOOST_USER_CONFIG), + has had any options necessary added to it, for example by an autoconf + generated configure script. +

                    -

                    - BOOST_NO_CONFIG -

                    +

                    + BOOST_NO_CONFIG +

                    -

                    - Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, - BOOST_NO_STDLIB_CONFIG - and BOOST_NO_PLATFORM_CONFIG. -

                    +

                    + Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, + BOOST_NO_STDLIB_CONFIG + and BOOST_NO_PLATFORM_CONFIG. +

                    -

                    - BOOST_STRICT_CONFIG -

                    +

                    + BOOST_STRICT_CONFIG +

                    -

                    - The normal behavior for compiler versions that are newer than the - last known version, is to assume that they have all the same defects - as the last known version. By setting this define, then compiler - versions that are newer than the last known version are assumed to - be fully conforming with the standard. This is probably most useful - for boost developers or testers, and for those who want to use boost - to test beta compiler versions. -

                    +

                    + The normal behavior for compiler versions that are newer than the + last known version, is to assume that they have all the same defects + as the last known version. By setting this define, then compiler + versions that are newer than the last known version are assumed + to be fully conforming with the standard. This is probably most + useful for boost developers or testers, and for those who want + to use boost to test beta compiler versions. +

                    -

                    - BOOST_ASSERT_CONFIG -

                    +

                    + BOOST_ASSERT_CONFIG +

                    -

                    - When this flag is set, if the config finds anything unknown, then - it will stop with a #error rather than continue. Boost regression - testers should set this define, as should anyone who wants to quickly - check whether boost is supported on their platform. -

                    +

                    + When this flag is set, if the config finds anything unknown, then + it will stop with a #error rather than continue. Boost regression + testers should set this define, as should anyone who wants to quickly + check whether boost is supported on their platform. +

                    -

                    - BOOST_DISABLE_THREADS -

                    +

                    + BOOST_DISABLE_THREADS +

                    -

                    - When defined, disables threading support, even if the compiler in - its current translation mode supports multiple threads. -

                    +

                    + When defined, disables threading support, even if the compiler + in its current translation mode supports multiple threads. +

                    -

                    - BOOST_DISABLE_WIN32 -

                    +

                    + BOOST_DISABLE_WIN32 +

                    -

                    - When defined, disables the use of Win32 specific API's, even when - these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless BOOST_HAS_PTHREADS is set. This - option may be set automatically by the config system when it detects - that the compiler is in "strict mode". -

                    +

                    + When defined, disables the use of Win32 specific API's, even when + these are available. Also has the effect of setting BOOST_DISABLE_THREADS unless + BOOST_HAS_PTHREADS + is set. This option may be set automatically by the config system + when it detects that the compiler is in "strict mode". +

                    -

                    - BOOST_DISABLE_ABI_HEADERS -

                    +

                    + BOOST_DISABLE_ABI_HEADERS +

                    -

                    - Stops boost headers from including any prefix/suffix headers that - normally control things like struct packing and alignment. -

                    +

                    + Stops boost headers from including any prefix/suffix headers that + normally control things like struct packing and alignment. +

                    -

                    - BOOST_ABI_PREFIX -

                    +

                    + BOOST_ABI_PREFIX +

                    -

                    - A prefix header to include in place of whatever boost.config would - normally select, any replacement should set up struct packing and - alignment options as required. -

                    +

                    + A prefix header to include in place of whatever boost.config would + normally select, any replacement should set up struct packing and + alignment options as required. +

                    -

                    - BOOST_ABI_SUFFIX -

                    +

                    + BOOST_ABI_SUFFIX +

                    -

                    - A suffix header to include in place of whatever boost.config would - normally select, any replacement should undo the effects of the prefix - header. -

                    +

                    + A suffix header to include in place of whatever boost.config would + normally select, any replacement should undo the effects of the + prefix header. +

                    -

                    - BOOST_ALL_DYN_LINK -

                    +

                    + BOOST_ALL_DYN_LINK +

                    -

                    - Forces all libraries that have separate source, to be linked as dll's - rather than static libraries on Microsoft Windows (this macro is - used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may only - be dynamically linked (Boost.Threads for example), in these cases - this macro has no effect. -

                    +

                    + Forces all libraries that have separate source, to be linked as + dll's rather than static libraries on Microsoft Windows (this macro + is used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro has no effect. +

                    -

                    - BOOST_WHATEVER_DYN_LINK -

                    +

                    + BOOST_WHATEVER_DYN_LINK +

                    -

                    - Forces library "whatever" to be linked as a dll rather - than a static library on Microsoft Windows: replace the WHATEVER - part of the macro name with the name of the library that you want - to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK - or BOOST_REGEX_DYN_LINK - etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler - knows which symbols to look for in a dll rather than in a static - library). Note that there may be some libraries that can only be - statically linked (Boost.Test for example) and others which may only - be dynamically linked (Boost.Threads for example), in these cases - this macro is unsupported. -

                    +

                    + Forces library "whatever" to be linked as a dll rather + than a static library on Microsoft Windows: replace the WHATEVER + part of the macro name with the name of the library that you want + to dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK + or BOOST_REGEX_DYN_LINK + etc (this macro is used to turn on __declspec(dllimport) modifiers, so that the compiler + knows which symbols to look for in a dll rather than in a static + library). Note that there may be some libraries that can only be + statically linked (Boost.Test for example) and others which may + only be dynamically linked (Boost.Threads for example), in these + cases this macro is unsupported. +

                    -

                    - BOOST_ALL_NO_LIB -

                    +

                    + BOOST_ALL_NO_LIB +

                    -

                    - Tells the config system not to automatically select which libraries - to link against. Normally if a compiler supports #pragma lib, then - the correct library build variant will be automatically selected - and linked against, simply by the act of including one of that library's - headers. This macro turns that feature off. -

                    +

                    + Tells the config system not to automatically select which libraries + to link against. Normally if a compiler supports #pragma lib, then + the correct library build variant will be automatically selected + and linked against, simply by the act of including one of that + library's headers. This macro turns that feature off. +

                    -

                    - BOOST_WHATEVER_NO_LIB -

                    +

                    + BOOST_WHATEVER_NO_LIB +

                    -

                    - Tells the config system not to automatically select which library - to link against for library "whatever", replace WHATEVER - in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally if - a compiler supports #pragma - lib, then the correct library - build variant will be automatically selected and linked against, - simply by the act of including one of that library's headers. This - macro turns that feature off. -

                    +

                    + Tells the config system not to automatically select which library + to link against for library "whatever", replace WHATEVER + in the macro name with the name of the library; for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB. Normally + if a compiler supports #pragma + lib, then the correct + library build variant will be automatically selected and linked + against, simply by the act of including one of that library's headers. + This macro turns that feature off. +

                    -

                    - BOOST_LIB_DIAGNOSTIC -

                    +

                    + BOOST_LIB_DIAGNOSTIC +

                    -

                    - Causes the auto-linking code to output diagnostic messages indicating - the name of the library that is selected for linking. -

                    +

                    + Causes the auto-linking code to output diagnostic messages indicating + the name of the library that is selected for linking. +

                    -

                    - BOOST_LIB_TOOLSET -

                    +

                    + BOOST_LIB_TOOLSET +

                    -

                    - Overrides the name of the toolset part of the name of library being - linked to; note if defined this must be defined to a quoted string - literal, for example "abc". -

                    +

                    + Overrides the name of the toolset part of the name of library being + linked to; note if defined this must be defined to a quoted string + literal, for example "abc". +

                    -
                    +

                    Advanced configuration usage @@ -726,7 +722,7 @@

                    The following usage examples represent just a few of the possibilities:

                    -
                    +

                    Example 1, creating our own frozen configuration @@ -758,7 +754,7 @@ yet supported by boost.

                    -
                    +

                    Example 2: skipping files that you don't need @@ -777,7 +773,7 @@ a dependency on two boost headers.

                    -
                    +
                    -
                    +

                    Testing the boost configuration @@ -808,119 +804,119 @@ -

                    - File -

                    +

                    + File +

                    -

                    - Description -

                    +

                    + Description +

                    -

                    - config_info.cpp -

                    +

                    + config_info.cpp +

                    -

                    - Prints out a detailed description of your compiler/standard library/platform - setup, plus your current boost configuration. The information provided - by this program useful in setting up the boost configuration files. - If you report that boost is incorrectly configured for your compiler/library/platform - then please include the output from this program when reporting the - changes required. -

                    +

                    + Prints out a detailed description of your compiler/standard library/platform + setup, plus your current boost configuration. The information provided + by this program useful in setting up the boost configuration files. + If you report that boost is incorrectly configured for your compiler/library/platform + then please include the output from this program when reporting + the changes required. +

                    -

                    - config_test.cpp -

                    +

                    + config_test.cpp +

                    -

                    - A monolithic test program that includes most of the individual test - cases. This provides a quick check to see if boost is correctly configured - for your compiler/library/platform. -

                    +

                    + A monolithic test program that includes most of the individual + test cases. This provides a quick check to see if boost is correctly + configured for your compiler/library/platform. +

                    -

                    - limits_test.cpp -

                    +

                    + limits_test.cpp +

                    -

                    - Tests your standard library's std::numeric_limits - implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). This - test file fails with most versions of numeric_limits, mainly due - to the way that some compilers treat NAN's and infinity. -

                    +

                    + Tests your standard library's std::numeric_limits + implementation (or its boost provided replacement if BOOST_NO_LIMITS is defined). + This test file fails with most versions of numeric_limits, mainly + due to the way that some compilers treat NAN's and infinity. +

                    -

                    - no_*pass.cpp -

                    +

                    + no_*pass.cpp +

                    -

                    - Individual compiler defect test files. Each of these should compile, - if one does not then the corresponding BOOST_NO_XXX - macro needs to be defined - see each test file for specific details. -

                    +

                    + Individual compiler defect test files. Each of these should compile, + if one does not then the corresponding BOOST_NO_XXX + macro needs to be defined - see each test file for specific details. +

                    -

                    - no_*fail.cpp -

                    +

                    + no_*fail.cpp +

                    -

                    - Individual compiler defect test files. Each of these should not compile, - if one does then the corresponding BOOST_NO_XXX - macro is defined when it need not be - see each test file for specific - details. -

                    +

                    + Individual compiler defect test files. Each of these should not + compile, if one does then the corresponding BOOST_NO_XXX + macro is defined when it need not be - see each test file for specific + details. +

                    -

                    - has_*pass.cpp -

                    +

                    + has_*pass.cpp +

                    -

                    - Individual feature test files. If one of these does not compile then - the corresponding BOOST_HAS_XXX - macro is defined when it should not be - see each test file for specific - details. -

                    +

                    + Individual feature test files. If one of these does not compile + then the corresponding BOOST_HAS_XXX + macro is defined when it should not be - see each test file for + specific details. +

                    -

                    - has_*fail.cpp -

                    +

                    + has_*fail.cpp +

                    -

                    - Individual feature test files. If one of these does compile then - the corresponding BOOST_HAS_XXX - macro can be safely defined - see each test file for specific details. -

                    +

                    + Individual feature test files. If one of these does compile then + the corresponding BOOST_HAS_XXX + macro can be safely defined - see each test file for specific details. +

                    @@ -938,16 +934,10 @@

                    Alternatively you can run the configure script like this:

                    -
                    -

                    -

                    -

                    - ./configure - --enable-test -

                    -

                    -

                    -
                    +

                    + ./configure + --enable-test +

                    in which case the script will test the current configuration rather than creating a new one from scratch. @@ -960,10 +950,10 @@

                    - +

                    Last revised: June 11, 2010 at 11:20:15 GMT

                    Last revised: June 30, 2010 at 23:58:03 GMT


                    -
                    Next
                    +
                    Next
                    From 906168561ab1529732f34ab2425c3d3404a6a355 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Sun, 4 Jul 2010 10:19:10 +0000 Subject: [PATCH 205/435] Removed temporary option to skip ptr-to-member initializations, BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER. [SVN r63583] --- test/boost_no_com_value_init.ipp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp index a10cf8fe..47e9ff52 100644 --- a/test/boost_no_com_value_init.ipp +++ b/test/boost_no_com_value_init.ipp @@ -657,12 +657,10 @@ namespace boost_no_complete_value_initialization m_member_function_ptr_array(), m_member_function_ptr_struct(), m_member_function_ptr_struct_array(), -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER m_ptr_to_member(), m_ptr_to_member_array(), m_ptr_to_member_struct(), m_ptr_to_member_struct_array(), -#endif m_bit_field_struct(), m_bit_field_struct_array(), m_int_struct(), @@ -760,14 +758,12 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) + -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) + -#endif FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) + FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) + @@ -853,10 +849,8 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) + FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) + -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE(ptr_to_member_type()) + FAILED_TO_VALUE_INITIALIZE(ptr_to_member_struct()) + -#endif FAILED_TO_VALUE_INITIALIZE(int_struct()) + FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) + FAILED_TO_VALUE_INITIALIZE(pod_struct()) + @@ -909,10 +903,8 @@ namespace boost_no_complete_value_initialization FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + -#ifndef BOOST_DETAIL_NO_COMPLETE_VALUE_INITIALIZATION_SKIP_PTR_TO_MEMBER FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + -#endif FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper() ) + @@ -1015,7 +1007,7 @@ namespace boost_no_complete_value_initialization << num_failures_of_temporaries << '+' << num_failures_of_heap_objects << "): " << total_num_failures - << "\nDetected by boost_no_complete_value_initialization::test() revision 31." + << "\nDetected by boost_no_complete_value_initialization::test() revision 32." << std::endl; } return static_cast(total_num_failures); From 28b8d54fcdb74b55dde7cc9320b82049367ac6a6 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Aug 2010 12:27:35 +0000 Subject: [PATCH 206/435] Suppress gcc warnings. Fixes #4508. [SVN r64749] --- include/boost/config/platform/bsd.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index f02b0e26..a0142978 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -56,7 +56,7 @@ #endif #if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \ - || (__NetBSD_GCC__ >= 2095003) || defined(__DragonFly__)) + || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__)) # define BOOST_NO_CWCHAR #endif // From 283b3fca541e815b17045fa2defa074d4a417f08 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Aug 2010 12:36:42 +0000 Subject: [PATCH 207/435] Add VMS support. Fixes #4474. [SVN r64750] --- include/boost/config/select_platform_config.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/select_platform_config.hpp b/include/boost/config/select_platform_config.hpp index 8606e12e..bc1ffaf6 100644 --- a/include/boost/config/select_platform_config.hpp +++ b/include/boost/config/select_platform_config.hpp @@ -69,6 +69,9 @@ // Symbian: # define BOOST_PLATFORM_CONFIG "boost/config/platform/symbian.hpp" +#elif defined(__VMS) +// VMS: +# define BOOST_PLATFORM_CONFIG "boost/config/platform/vms.hpp" #else # if defined(unix) \ From c3d5e03a89ab4a4d4ebb6b1463e195e2f42d6e9f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 12 Aug 2010 15:29:06 +0000 Subject: [PATCH 208/435] Add file missing in previous commit. [SVN r64760] --- include/boost/config/platform/vms.hpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 include/boost/config/platform/vms.hpp diff --git a/include/boost/config/platform/vms.hpp b/include/boost/config/platform/vms.hpp new file mode 100644 index 00000000..f70efcfb --- /dev/null +++ b/include/boost/config/platform/vms.hpp @@ -0,0 +1,25 @@ +// (C) Copyright Artyom Beilis 2010. +// 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) + +#ifndef BOOST_CONFIG_PLATFORM_VMS_HPP +#define BOOST_CONFIG_PLATFORM_VMS_HPP + +#define BOOST_PLATFORM "OpenVMS" + +#undef BOOST_HAS_STDINT_H +#define BOOST_HAS_UNISTD_H +#define BOOST_HAS_NL_TYPES_H +#define BOOST_HAS_GETTIMEOFDAY +#define BOOST_HAS_DIRENT_H +#define BOOST_HAS_PTHREADS +#define BOOST_HAS_NANOSLEEP +#define BOOST_HAS_CLOCK_GETTIME +#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +#define BOOST_HAS_LOG1P +#define BOOST_HAS_EXPM1 +#define BOOST_HAS_THREADS +#undef BOOST_HAS_SCHED_YIELD + +#endif From 1a1ed6f02aa498596290d09b422afded7c6e4781 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Aug 2010 10:19:29 +0000 Subject: [PATCH 209/435] Apply patches for BOOST_NO_VARIADIC_MACROS supplied by Edward Diener. [SVN r64858] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 44 ++++++++----- .../guidelines_for_boost_authors.html | 56 ++++++++--------- doc/html/boost_config/rationale.html | 8 +-- doc/html/index.html | 34 +++++----- doc/macro_reference.qbk | 3 + include/boost/config/compiler/borland.hpp | 2 + include/boost/config/compiler/clang.hpp | 1 + include/boost/config/compiler/common_edg.hpp | 4 +- include/boost/config/compiler/digitalmars.hpp | 3 + include/boost/config/compiler/gcc.hpp | 2 + include/boost/config/compiler/gcc_xml.hpp | 2 + include/boost/config/compiler/hp_acc.hpp | 10 +++ include/boost/config/compiler/metrowerks.hpp | 1 + include/boost/config/compiler/mpw.hpp | 1 + include/boost/config/compiler/nvcc.hpp | 1 + include/boost/config/compiler/pgi.hpp | 1 + include/boost/config/compiler/sunpro_cc.hpp | 1 + include/boost/config/compiler/vacpp.hpp | 1 + include/boost/config/compiler/visualc.hpp | 2 + test/all/Jamfile.v2 | 5 +- test/boost_no_variadic_macros.ipp | 62 +++++++++++++++++++ test/config_info.cpp | 2 + test/config_test.cpp | 12 +++- test/no_variadic_macros_fail.cpp | 37 +++++++++++ test/no_variadic_macros_pass.cpp | 37 +++++++++++ 26 files changed, 264 insertions(+), 72 deletions(-) create mode 100644 test/boost_no_variadic_macros.ipp create mode 100644 test/no_variadic_macros_fail.cpp create mode 100644 test/no_variadic_macros_pass.cpp diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 87d6546a..95301d82 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
                    PrevUpHome
                    -
                    +
                    diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index b684de83..b7390a01 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
                    PrevUpHomeNext
                    -
                    +
                    @@ -44,7 +44,7 @@

                    -
                    +

                    Macros that describe defects @@ -1291,7 +1291,7 @@

                    -
                    +
                    -
                    +
                    -
                    +

                    Macros that describe C++0x features not supported @@ -2831,12 +2831,24 @@

                    + + +

                    + BOOST_NO_VARIADIC_MACROS +

                    + + +

                    + The compiler does not support variadic macros. +

                    + +

                    -
                    +

                    Boost Helper Macros @@ -3176,7 +3188,7 @@

                    -
                    +

                    Boost Informational Macros @@ -3454,7 +3466,7 @@

                    -
                    +

                    Macros for libraries with separate source code @@ -3471,14 +3483,14 @@ The following macros and helper headers are of use to authors whose libraries include separate source code, and are intended to address several issues:

                    -
                      -
                    • +
                        +
                      • Controlling shared library symbol visibility
                      • -
                      • +
                      • Fixing the ABI of the compiled library
                      • -
                      • +
                      • Selecting which compiled library to link against based upon the compilers settings
                      • @@ -3487,7 +3499,7 @@ See Guidelines for Authors of Boost Libraries Containing Separate Source

                        -
                        +
                        -
                        +

                        ABI Fixing @@ -3700,7 +3712,7 @@ to point to their own prefix/suffix headers if they so wish.

                        -
                        +

                        Automatic library selection diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 577bd808..820adb10 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,7 +22,7 @@
                        PrevUpHomeNext
                        -
                        +

                        Guidelines for Boost Authors @@ -61,26 +61,26 @@

                        Note that:

                        -
                          -
                        • +
                            +
                          • Boost library implementers are not required to "#include <boost/config.hpp>", and are not required in any way to support compilers that do not comply with the C++ Standard (ISO/IEC 14882).
                          • -
                          • +
                          • If a library implementer wishes to support some non-conforming compiler, or to support some platform specific feature, "#include <boost/config.hpp>" is the preferred way to obtain configuration information not available from the standard headers such as <climits>, etc.
                          • -
                          • +
                          • If configuration information can be deduced from standard headers such as <climits>, use those standard headers rather than <boost/config.hpp>.
                          • -
                          • +
                          • Boost files that use macros defined in <boost/config.hpp> should have sensible, standard conforming, default behavior if the macro is not defined. This means that the starting point for porting <boost/config.hpp> to a new platform is simply to define @@ -88,22 +88,22 @@ is no sensible default behavior, an #error message should describe the problem.
                          • -
                          • +
                          • If a Boost library implementer wants something added to config.hpp, post a request on the Boost mailing list. There is no guarantee such a request will be honored; the intent is to limit the complexity of config.hpp.
                          • -
                          • +
                          • The intent is to support only compilers which appear on their way to becoming C++ Standard compliant, and only recent releases of those compilers at that.
                          • -
                          • +
                          • The intent is not to disable mainstream features now well-supported by the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
                          -
                          +

                          Disabling Compiler Warnings @@ -116,17 +116,17 @@

                          Note that:

                          -
                            -
                          • +
                              +
                            • This header should never be included by another Boost header, it should only ever be used by a library source file or a test case.
                            • -
                            • +
                            • The header should be included before you include any other header.
                            • -
                            • +
                            • This header only disables warnings that are hard or impossible to otherwise deal with, and which are typically emitted by one compiler only, or in one compilers own standard library headers. @@ -182,7 +182,7 @@
                          -
                          +

                          Adding New Defect Macros @@ -233,15 +233,15 @@ Once the test code is in place in libs/config/test, updating the configuration test system proceeds as:

                          -
                            -
                          • +
                              +
                            • cd into libs/config/tools and run bjam. This generates the .cpp file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, config_test.cpp and config_info.cpp.

                            • -
                            • +
                            • cd into libs/config/test/all and run bjam MACRONAME compiler-list, where MACRONAME is the name of the new macro, and @@ -253,7 +253,7 @@ is defined when it should not be defined, xxx_fail_test will not report **passed**.

                            • -
                            • +
                            • cd into libs/config/test and run bjam config_info config_test compiler-list. @@ -266,26 +266,26 @@

                              Then you should:

                              -
                                -
                              • +
                                  +
                                • Define the defect macro in those config headers that require it.
                                • -
                                • +
                                • Document the macro in this documentation (please do not forget this step!!)
                                • -
                                • +
                                • Commit everything.
                                • -
                                • +
                                • Keep an eye on the regression tests for new failures in Boost.Config caused by the addition.
                                • -
                                • +
                                • Start using the macro.
                              -
                              +

                              Adding New Feature Test Macros @@ -309,7 +309,7 @@ <unistd.h>).

                              -
                              +

                              Modifying the Boost Configuration Headers diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 4be5310f..e073e213 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -22,7 +22,7 @@
                              PrevUpHomeNext
                              -
                              +
                              @@ -39,7 +39,7 @@ principles from the following article.

                              -
                              +
                              @@ -90,7 +90,7 @@ code must be provided.

                              -
                              +
                              diff --git a/doc/html/index.html b/doc/html/index.html index 5a390070..fe1235db 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -18,7 +18,7 @@
                              Next
                              -
                              +

                              @@ -28,7 +28,7 @@

                              -

                              +

                              Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                              @@ -92,7 +92,7 @@
                              Acknowledgements
                              -
                              +
                              -
                              +

                              Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

                              -
                              +

                              The <boost/config.hpp> header @@ -168,7 +168,7 @@

                              -
                              +

                              Using the configure script @@ -289,15 +289,15 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

                              -
                                -
                              • +
                                  +
                                • Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp provided by boost. This option allows only one configure-generated setup; boost developers should avoid this option, as it incurs the danger of accidentally committing a configure-modified <boost/config/user.hpp> to the cvs repository (something you will not be thanked for!).
                                • -
                                • +
                                • Option 2: give the header a more memorable name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For example create a new sub-directory <boost-root>/boost/config/ user/, and copy the header there; for example @@ -312,7 +312,7 @@

                                -
                                +

                                User settable options @@ -678,7 +678,7 @@

                                -
                                +

                                Advanced configuration usage @@ -722,7 +722,7 @@

                                The following usage examples represent just a few of the possibilities:

                                -
                                +

                                Example 1, creating our own frozen configuration @@ -754,7 +754,7 @@ yet supported by boost.

                                -
                                +

                                Example 2: skipping files that you don't need @@ -773,7 +773,7 @@ a dependency on two boost headers.

                                -
                                +
                                -
                                +

                                Testing the boost configuration @@ -950,7 +950,7 @@

                                - +

                                Last revised: June 30, 2010 at 23:58:03 GMT

                                Last revised: August 17, 2010 at 09:09:56 GMT


                                diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index f9d9fcc3..54d2ea2b 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -620,6 +620,9 @@ Unicode (`u8`, `u`, `U`) literals. [[`BOOST_NO_VARIADIC_TEMPLATES`][The compiler does not support variadic templates. ]] +[[`BOOST_NO_VARIADIC_MACROS`][The compiler does not support +variadic macros. +]] ] [endsect] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index bd3a8c3f..a989fd63 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -46,6 +46,8 @@ // Borland C++Builder 5, command-line compiler 5.5: # define BOOST_NO_OPERATORS_IN_NAMESPACE # endif +// Variadic macros do not exist for C++ Builder versions 5 and below +#define BOOST_NO_VARIADIC_MACROS # endif // Version 5.51 and below: diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 85f4484d..2ce67732 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -48,6 +48,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS // HACK: Clang does support extern templates, but Boost's test for // them is wrong. diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index cb283376..682c73af 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -88,12 +88,10 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS #ifdef c_plusplus // EDG has "long long" in non-strict mode // However, some libraries have insufficient "long long" support // #define BOOST_HAS_LONG_LONG #endif - - - diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index bd37d2f1..31c11bf0 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -80,6 +80,9 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#if (__DMC__ < 0x812) +#define BOOST_NO_VARIADIC_MACROS +#endif #if __DMC__ < 0x800 #error "Compiler not supported or configured - please reconfigure" diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 54f1bb98..e1c33e0c 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -43,6 +43,8 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # define BOOST_NO_IS_ABSTRACT # define BOOST_NO_EXTERN_TEMPLATE +// Variadic macros do not exist for gcc versions before 3.0 +# define BOOST_NO_VARIADIC_MACROS #elif __GNUC__ == 3 # if defined (__PATHSCALE__) # define BOOST_NO_TWO_PHASE_NAME_LOOKUP diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 7f884b19..48fb4533 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -35,6 +35,7 @@ # define BOOST_NO_RVALUE_REFERENCES # define BOOST_NO_STATIC_ASSERT # define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_VARIADIC_MACROS # define BOOST_NO_AUTO_DECLARATIONS # define BOOST_NO_AUTO_MULTIDECLARATIONS # define BOOST_NO_CHAR16_T @@ -49,6 +50,7 @@ # define BOOST_NO_LAMBDAS # define BOOST_NO_RAW_LITERALS # define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_VARIADIC_MACROS #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index 98e7772a..d0b672ec 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -115,6 +115,16 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES + +/* + See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and + https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436 +*/ + +#if (__HP_aCC < 62500) || !defined(HP_CXX0x_SOURCE) + #define BOOST_NO_VARIADIC_MACROS +#endif + #endif // diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 3bc9d975..21083b7a 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -114,6 +114,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 4db14dde..ae12f801 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -63,6 +63,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS // // versions check: diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index e31c3e28..eaecf374 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -37,6 +37,7 @@ #define BOOST_HAS_DIRENT_H #define BOOST_HAS_CLOCK_GETTIME #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_STD_UNORDERED diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 1c7c84b7..fb3a6c0b 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -70,6 +70,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS // // version check: diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index aca49fa0..85fa4625 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -122,6 +122,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS // // Version diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index e5b69711..5ae9c285 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -91,6 +91,7 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_VARIADIC_MACROS diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index a862570f..6755287d 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -81,6 +81,8 @@ # define BOOST_NO_SWPRINTF // Our extern template tests also fail for this compiler: # define BOOST_NO_EXTERN_TEMPLATE +// Variadic macros do not exist for VC7.1 and lower +# define BOOST_NO_VARIADIC_MACROS #endif #if defined(UNDER_CE) diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 01e90656..483bf98f 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 Fri Jun 04 12:51:35 2010 +# This file was automatically generated on Tue Aug 17 09:59:01 2010 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -511,6 +511,9 @@ test-suite "BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE" : test-suite "BOOST_NO_USING_TEMPLATE" : [ run ../no_using_template_pass.cpp ] [ compile-fail ../no_using_template_fail.cpp ] ; +test-suite "BOOST_NO_VARIADIC_MACROS" : +[ run ../no_variadic_macros_pass.cpp ] +[ compile-fail ../no_variadic_macros_fail.cpp ] ; test-suite "BOOST_NO_VARIADIC_TEMPLATES" : [ run ../no_variadic_templates_pass.cpp ] [ compile-fail ../no_variadic_templates_fail.cpp ] ; diff --git a/test/boost_no_variadic_macros.ipp b/test/boost_no_variadic_macros.ipp new file mode 100644 index 00000000..0382c21a --- /dev/null +++ b/test/boost_no_variadic_macros.ipp @@ -0,0 +1,62 @@ +// Copyright (C) 2010 Edward Diener +// 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_VARIADIC_MACROS +// TITLE: C++0x variadic macros unavailable +// DESCRIPTION: The compiler does not support C++0x variadic macros + +// This is a simple test + +#define TEST_VARIADIC_MACRO_SIMPLE(avalue,...) __VA_ARGS__ + +/* + + This is a more complicated test, which Steve Watanabe graciously + supplied, when I asked if it were possible to strip the parantheses + from a macro argument. I have changed the names somewhat to prevent + any common clashes with other macros in the config testing suite + by prepending to each macro name TEST_VARIADIC_MACRO_. + + You may find this test overdone and may want to remove it. + +*/ + +#define TEST_VARIADIC_MACRO_CAT(x, y) TEST_VARIADIC_MACRO_CAT_I(x, y) +#define TEST_VARIADIC_MACRO_CAT_I(x, y) x ## y + +#define TEST_VARIADIC_MACRO_APPLY(macro, args) TEST_VARIADIC_MACRO_APPLY_I(macro, args) +#define TEST_VARIADIC_MACRO_APPLY_I(macro, args) macro args + +#define TEST_VARIADIC_MACRO_STRIP_PARENS(x) TEST_VARIADIC_MACRO_EVAL((TEST_VARIADIC_MACRO_STRIP_PARENS_I x), x) +#define TEST_VARIADIC_MACRO_STRIP_PARENS_I(...) 1,1 + +#define TEST_VARIADIC_MACRO_EVAL(test, x) TEST_VARIADIC_MACRO_EVAL_I(test, x) +#define TEST_VARIADIC_MACRO_EVAL_I(test, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(TEST_VARIADIC_MACRO_TEST_ARITY test, x) + +#define TEST_VARIADIC_MACRO_TEST_ARITY(...) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_TEST_ARITY_I, (__VA_ARGS__, 2, 1)) +#define TEST_VARIADIC_MACRO_TEST_ARITY_I(a,b,c,...) c + +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(cond, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x) +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x) TEST_VARIADIC_MACRO_CAT(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_, cond)(x) + +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_1(x) x +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2(x) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I, x) +#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I(...) __VA_ARGS__ + +namespace boost_no_variadic_macros { + +template struct test_variadic_macro_class {}; + +int test() +{ + + int x = TEST_VARIADIC_MACRO_STRIP_PARENS(3); + + return 0; +} + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index a05586d4..cf62f529 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1066,6 +1066,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION); PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE); PRINT_MACRO(BOOST_NO_USING_TEMPLATE); + PRINT_MACRO(BOOST_NO_VARIADIC_MACROS); PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); PRINT_MACRO(BOOST_NO_VOID_RETURNS); @@ -1084,6 +1085,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 22352565..fdce11dd 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Jun 04 12:51:35 2010 +// This file was automatically generated on Tue Aug 17 09:59:01 2010 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -582,6 +582,11 @@ namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost; #else namespace boost_no_using_template = empty_boost; #endif +#ifndef BOOST_NO_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +namespace boost_no_variadic_macros = empty_boost; +#endif #ifndef BOOST_NO_VARIADIC_TEMPLATES #include "boost_no_variadic_templates.ipp" #else @@ -1671,6 +1676,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_USING_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_variadic_macros::test()) + { + std::cerr << "Failed test for BOOST_NO_VARIADIC_MACROS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_variadic_templates::test()) { std::cerr << "Failed test for BOOST_NO_VARIADIC_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_variadic_macros_fail.cpp b/test/no_variadic_macros_fail.cpp new file mode 100644 index 00000000..e1195469 --- /dev/null +++ b/test/no_variadic_macros_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Aug 17 09:59:01 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_VARIADIC_MACROS +// This file should not compile, if it does then +// BOOST_NO_VARIADIC_MACROS should not be defined. +// See file boost_no_variadic_macros.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_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_macros::test(); +} + diff --git a/test/no_variadic_macros_pass.cpp b/test/no_variadic_macros_pass.cpp new file mode 100644 index 00000000..7475c4fa --- /dev/null +++ b/test/no_variadic_macros_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Tue Aug 17 09:59:01 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_VARIADIC_MACROS +// This file should compile, if it does not then +// BOOST_NO_VARIADIC_MACROS should be defined. +// See file boost_no_variadic_macros.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_VARIADIC_MACROS +#include "boost_no_variadic_macros.ipp" +#else +namespace boost_no_variadic_macros = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_variadic_macros::test(); +} + From 55cdba0324d68176cd0f0641c35e2429f79aaced Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 17 Aug 2010 14:07:45 +0000 Subject: [PATCH 210/435] Remove double define of BOOST_NO_VARIADIC_MACROS [SVN r64860] --- include/boost/config/compiler/gcc_xml.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 48fb4533..a456463c 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -50,7 +50,6 @@ # define BOOST_NO_LAMBDAS # define BOOST_NO_RAW_LITERALS # define BOOST_NO_UNICODE_LITERALS -# define BOOST_NO_VARIADIC_MACROS #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ From 06e164db69f27c777cf88588a8fa25f7fa0b3f43 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 17 Aug 2010 17:54:49 +0000 Subject: [PATCH 211/435] Prepare for 1.45 [SVN r64862] --- 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 8d996f87..bdb68d44 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 104400 +#define BOOST_VERSION 104500 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_44" +#define BOOST_LIB_VERSION "1_45" #endif From 290d765e3f6b391b6175174dca71e91ebedbccec Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 18 Aug 2010 12:26:29 +0000 Subject: [PATCH 212/435] Fix typo in auto-linking code. Fixes #4563. [SVN r64885] --- include/boost/config/auto_link.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 0d17eb8f..e562caff 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -362,7 +362,7 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. && defined(BOOST_LIB_VERSION) #ifdef BOOST_AUTO_LINK_TAGGED -# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") +# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib") # ifdef BOOST_LIB_DIAGNOSTIC # pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib") # endif From 9edaeb4998271b0d055bef838228805351b990c2 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 31 Aug 2010 12:19:53 +0000 Subject: [PATCH 213/435] Suppress GCC warnings from this header when compiled with -pedantic and certain GCC-4.x versions (probably 4.5.0 specific). [SVN r65146] --- include/boost/config/suffix.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 3408d225..722758f9 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -25,6 +25,14 @@ #ifndef BOOST_CONFIG_SUFFIX_HPP #define BOOST_CONFIG_SUFFIX_HPP +#if defined(__GNUC__) && (__GNUC__ >= 4) +// +// Some GCC-4.x versions issue warnings even when __extension__ is used, +// so use this as a workaround: +// +#pragma GCC system_header +#endif + // // ensure that visibility macros are always defined, thus symplifying use // From dca79a5e179cdc8a5c9867790ff0f25204fd6e37 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 21 Sep 2010 17:09:57 +0000 Subject: [PATCH 214/435] Update test case to make it a touch more strict. [SVN r65517] --- test/boost_no_nested_friendship.ipp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/test/boost_no_nested_friendship.ipp b/test/boost_no_nested_friendship.ipp index f6df83b2..7ff9cc42 100644 --- a/test/boost_no_nested_friendship.ipp +++ b/test/boost_no_nested_friendship.ipp @@ -13,15 +13,31 @@ namespace boost_no_nested_friendship { class A { - static int b; - class B { - int f() { return b; } +public: + A() {} + struct B { + int f(A& a) + { + a.f1(); + a.f2(a); + return a.b; + } }; + +private: + static int b; + static void f1(){} + template + static void f2(const T&){} }; +int A::b = 0; + int test() { - return 0; + A a; + A::B b; + return b.f(a); } } From c02ec6995d15e70ed83136a227b47e8b3c0d4b58 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 22 Sep 2010 08:24:07 +0000 Subject: [PATCH 215/435] Fix for cygwin symbol visibility - sometimes _WIN32 may be defined even on cygwin. Fixes #4670. [SVN r65530] --- include/boost/config/compiler/gcc.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index e1c33e0c..eeaf9982 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -115,7 +115,7 @@ // Dynamic shared object (DSO) and dynamic-link library (DLL) support // #if __GNUC__ >= 4 -# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) // All Win32 development environments, including 64-bit Windows and MinGW, define // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, // so does not define _WIN32 or its variants. From 0e321900b21ee36d8941b726f1f138f1f192935e Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 26 Sep 2010 09:30:38 +0000 Subject: [PATCH 216/435] Add Vincete Botet's patches for new BOOST_NO_NUMERIC_LIMITS_LOWEST macro. Disabled BOOST_HAS_NL_TYPES macro for cygwin - it lies about being XSI conforming :-( [SVN r65594] --- .../boost_config/boost_macro_reference.html | 17 ++++++++++ doc/html/index.html | 4 +-- doc/macro_reference.qbk | 3 ++ include/boost/config/platform/cygwin.hpp | 7 +++++ include/boost/config/stdlib/dinkumware.hpp | 1 + include/boost/config/stdlib/libcomo.hpp | 1 + include/boost/config/stdlib/libstdcpp3.hpp | 6 ++++ 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 + test/all/Jamfile.v2 | 5 ++- test/boost_no_limits_lowest.ipp | 31 +++++++++++++++++++ test/config_info.cpp | 3 ++ test/config_test.cpp | 12 ++++++- 17 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 test/boost_no_limits_lowest.ipp diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index b7390a01..5287e835 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -533,6 +533,23 @@ + +

                                + BOOST_NO_NUMERIC_LIMITS_LOWEST +

                                + + +

                                + Standard library +

                                + + +

                                + Static function numeric_limits<T>::lowest() is not available for use. +

                                + + +

                                BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS diff --git a/doc/html/index.html b/doc/html/index.html index fe1235db..48677667 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

                                -

                                +

                                Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                                @@ -950,7 +950,7 @@
                                - +

                                Last revised: August 17, 2010 at 09:09:56 GMT

                                Last revised: September 26, 2010 at 09:24:20 GMT


                                diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 54d2ea2b..1c7e8c46 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -144,6 +144,9 @@ The C++ implementation does not provide the `` header. Never check for this symbol in library code; always include ``, which guarantees to provide `std::numeric_limits`. ]] +[[`BOOST_NO_NUMERIC_LIMITS_LOWEST`][Standard library][ +Static function `numeric_limits::lowest()` is not available for use. +]] [[`BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS`][Standard library][ Constants such as `numeric_limits::is_signed` are not available for use at compile-time. diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 5627dd60..8e1bcb01 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -41,6 +41,13 @@ // boilerplate code: #include + +// +// Cygwin lies about XSI conformance, there is no nl_types.h: +// +#ifdef BOOST_HAS_NL_TYPES_H +# undef BOOST_HAS_NL_TYPES_H +#endif diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index ea8faf14..e33fef12 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -125,6 +125,7 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 97a39f3e..16a842ae 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -58,6 +58,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST // // Intrinsic type_traits support. diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 815d605c..01dd4907 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -115,6 +115,12 @@ # define BOOST_NO_0X_HDR_THREAD #endif +// C++0x features in GCC 4.5.0 and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +# define BOOST_NO_NUMERIC_LIMITS_LOWEST +#endif + // C++0x headers not yet implemented // # define BOOST_NO_0X_HDR_CODECVT diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 10792cda..147060d9 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -47,6 +47,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #define BOOST_STDLIB "Modena C++ standard library" diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index beb15de6..8185e351 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -71,6 +71,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #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 830c32ef..dcd0af84 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -177,4 +177,5 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 293886bc..4d426473 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -130,6 +130,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #define BOOST_STDLIB "SGI standard library" diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index bb6fe134..0e1c9b2b 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -225,6 +225,7 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #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 3504971f..0fc092f0 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -37,6 +37,7 @@ # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #define BOOST_STDLIB "Visual Age default standard library" diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 483bf98f..3321838b 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 Tue Aug 17 09:59:01 2010 +# This file was automatically generated on Sat Sep 25 16:53:42 2010 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -367,6 +367,9 @@ test-suite "BOOST_NO_LIMITS" : test-suite "BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS" : [ run ../no_limits_const_exp_pass.cpp ] [ compile-fail ../no_limits_const_exp_fail.cpp ] ; +test-suite "BOOST_NO_NUMERIC_LIMITS_LOWEST" : +[ run ../no_limits_lowest_pass.cpp ] +[ compile-fail ../no_limits_lowest_fail.cpp ] ; test-suite "BOOST_NO_LONG_LONG_NUMERIC_LIMITS" : [ run ../no_ll_limits_pass.cpp ] [ compile-fail ../no_ll_limits_fail.cpp ] ; diff --git a/test/boost_no_limits_lowest.ipp b/test/boost_no_limits_lowest.ipp new file mode 100644 index 00000000..ae09aa72 --- /dev/null +++ b/test/boost_no_limits_lowest.ipp @@ -0,0 +1,31 @@ +// (C) Copyright Vicente J. Botet Escriba 2010. +// 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_NUMERIC_LIMITS_LOWEST +// TITLE: static function lowest() in numeric_limits class +// DESCRIPTION: static function numeric_limits::lowest() are not available for use. + +#include + +namespace boost_no_numeric_limits_lowest{ + +int f() +{ + // this is never called, it just has to compile: + return std::numeric_limits::lowest(); +} + +int test() +{ + return 0; +} + +} + + + + diff --git a/test/config_info.cpp b/test/config_info.cpp index cf62f529..1f6bb1da 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1026,6 +1026,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP); PRINT_MACRO(BOOST_NO_NULLPTR); + PRINT_MACRO(BOOST_NO_NUMERIC_LIMITS_LOWEST); PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); @@ -1086,6 +1087,8 @@ void print_boost_macros() + + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index fdce11dd..90d13fd2 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Tue Aug 17 09:59:01 2010 +// This file was automatically generated on Sat Sep 25 16:53:42 2010 // 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_limits = empty_boost; #else namespace boost_no_limits_compile_time_constants = empty_boost; #endif +#ifndef BOOST_NO_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +namespace boost_no_numeric_limits_lowest = empty_boost; +#endif #ifndef BOOST_NO_LONG_LONG_NUMERIC_LIMITS #include "boost_no_ll_limits.ipp" #else @@ -1436,6 +1441,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_numeric_limits_lowest::test()) + { + std::cerr << "Failed test for BOOST_NO_NUMERIC_LIMITS_LOWEST at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_long_long_numeric_limits::test()) { std::cerr << "Failed test for BOOST_NO_LONG_LONG_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl; From 543cbd8760a2ae2b3a3ffc5fd98cdee0ade6389b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 27 Sep 2010 08:42:15 +0000 Subject: [PATCH 217/435] Add missing files. [SVN r65621] --- test/no_limits_lowest_fail.cpp | 37 ++++++++++++++++++++++++++++++++++ test/no_limits_lowest_pass.cpp | 37 ++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 test/no_limits_lowest_fail.cpp create mode 100644 test/no_limits_lowest_pass.cpp diff --git a/test/no_limits_lowest_fail.cpp b/test/no_limits_lowest_fail.cpp new file mode 100644 index 00000000..d58aa04e --- /dev/null +++ b/test/no_limits_lowest_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sat Sep 25 16:53:41 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_NUMERIC_LIMITS_LOWEST +// This file should not compile, if it does then +// BOOST_NO_NUMERIC_LIMITS_LOWEST should not be defined. +// See file boost_no_limits_lowest.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_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_numeric_limits_lowest::test(); +} + diff --git a/test/no_limits_lowest_pass.cpp b/test/no_limits_lowest_pass.cpp new file mode 100644 index 00000000..d6af60bd --- /dev/null +++ b/test/no_limits_lowest_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sat Sep 25 16:53:41 2010 +// 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: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_NUMERIC_LIMITS_LOWEST +// This file should compile, if it does not then +// BOOST_NO_NUMERIC_LIMITS_LOWEST should be defined. +// See file boost_no_limits_lowest.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_NUMERIC_LIMITS_LOWEST +#include "boost_no_limits_lowest.ipp" +#else +namespace boost_no_numeric_limits_lowest = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_numeric_limits_lowest::test(); +} + From 7ebb1ca9b555d0203adc5a71a71031304ccd0900 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 8 Nov 2010 17:01:44 +0000 Subject: [PATCH 218/435] Tidy up VC10 config and enable new VC10 feature (numeric_limits::lowest()). [SVN r66455] --- include/boost/config/compiler/visualc.hpp | 8 +++----- include/boost/config/stdlib/dinkumware.hpp | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 6755287d..15b58b38 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -94,10 +94,6 @@ # define BOOST_NO_MEMBER_TEMPLATE_FRIENDS #endif -#if _MSC_VER <= 1600 // 1600 == VC++ 10.0 -# define BOOST_NO_TWO_PHASE_NAME_LOOKUP -#endif - #if _MSC_VER == 1500 // 1500 == VC++ 9.0 // A bug in VC9: # define BOOST_NO_ADL_BARRIER @@ -181,6 +177,7 @@ #define BOOST_NO_STATIC_ASSERT #define BOOST_NO_NULLPTR #endif // _MSC_VER < 1600 + #if _MSC_VER >= 1600 #define BOOST_HAS_STDINT_H #endif @@ -198,10 +195,11 @@ #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_RAW_LITERALS #define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES +#define BOOST_NO_SFINAE_EXPR +#define BOOST_NO_TWO_PHASE_NAME_LOOKUP // // prefix and suffix headers: // diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index e33fef12..a7579daa 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -107,6 +107,7 @@ # define BOOST_NO_0X_HDR_UNORDERED_SET # define BOOST_NO_0X_HDR_TUPLE # define BOOST_NO_0X_HDR_TYPEINDEX +# define BOOST_NO_NUMERIC_LIMITS_LOWEST #endif #if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) @@ -125,7 +126,6 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD -# define BOOST_NO_NUMERIC_LIMITS_LOWEST #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER From 1121b83e3afd0ad256a07e97b79263c82bf04f92 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 9 Nov 2010 11:59:47 +0000 Subject: [PATCH 219/435] MingW32 has a few functions we weren't flagging up before. [SVN r66469] --- include/boost/config/platform/win32.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index f59c4ea7..690f464a 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -39,6 +39,11 @@ # define BOOST_HAS_UNISTD_H #endif +#if defined(__MINGW32__) && (__GNUC__ >= 4) +# define BOOST_HAS_EXPM1 +# define BOOST_HAS_LOG1P +# define BOOST_HAS_GETTIMEOFDAY +#endif // // Win32 will normally be using native Win32 threads, // but there is a pthread library avaliable as an option, From 4f9f6b89e743695dbad080a397abb7ee75156377 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 11 Nov 2010 16:35:00 +0000 Subject: [PATCH 220/435] Add some more macros to diagnostic list [SVN r66492] --- test/config_info.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/config_info.cpp b/test/config_info.cpp index 1f6bb1da..fd5261c8 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -27,6 +27,10 @@ #include #endif +#if defined(__MINGW32__) +# include <_mingw.h> +#endif + static unsigned int indent = 4; static unsigned int width = 40; @@ -794,6 +798,8 @@ void print_platform_macros() PRINT_MACRO(_THREAD_SAFE); PRINT_MACRO(_XOPEN_SOURCE_EXTENDED); PRINT_MACRO(XPG); + PRINT_MACRO(__MINGW32_MAJOR_VERSION); + PRINT_MACRO(__MINGW32_MINOR_VERSION); // POSIX: PRINT_MACRO(_POSIX_ADVISORY_INFO); PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO); @@ -900,6 +906,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_DISABLE_THREADS); PRINT_MACRO(BOOST_DISABLE_WIN32); PRINT_MACRO(BOOST_HAS_THREADS); + PRINT_MACRO(BOOST_WINDOWS); // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!! PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG); From 1e03292d1e020a2e868afd4611d762a60c2bf5b8 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 15 Nov 2010 09:26:29 +0000 Subject: [PATCH 221/435] Update last checked GCC version to 4.6, and add new C++0x features supported. [SVN r66585] --- include/boost/config/compiler/gcc.hpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index eeaf9982..f633647d 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -148,8 +148,6 @@ // C++0x features not implemented in any GCC version // -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_NULLPTR #define BOOST_NO_TEMPLATE_ALIASES // C++0x features in 4.3.n and later @@ -211,6 +209,13 @@ # define BOOST_NO_UNICODE_LITERALS #endif +// C++0x features in 4.5.n and later +// +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#define BOOST_NO_CONSTEXPR +#define BOOST_NO_NULLPTR +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ @@ -231,8 +236,8 @@ # error "Compiler not configured - please reconfigure" #endif // -// last known and checked version is 4.4 (Pre-release): -#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4)) +// last known and checked version is 4.6 (Pre-release): +#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else From 1aa27f2bc128549349e391f22dc5bbbd5a557f3a Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 21 Nov 2010 09:36:53 +0000 Subject: [PATCH 222/435] Normalise BOOST_NO_VARIADIC_TEMPLATES and BOOST_HAS_VARIADIC_TEMPL usage. [SVN r66654] --- include/boost/config/suffix.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 722758f9..f1f29114 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -349,6 +349,13 @@ #define BOOST_HAS_RVALUE_REFS #endif +// +// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_VARIADIC_TEMPLATES is not defined +// +#if !defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL) +#define BOOST_HAS_VARIADIC_TMPL +#endif + // BOOST_HAS_ABI_HEADERS // This macro gets set if we have headers that fix the ABI, // and prevent ODR violations when linking to external libraries: From edab200d72ebdb7bb22b0cae7d391f6c1d6e1ad4 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Tue, 23 Nov 2010 03:34:05 +0000 Subject: [PATCH 223/435] Added BOOST_HAS_FENV_H detection to Boost.Config (if this macro is defined, then the standard library/platform provide a POSIX compliant implementation of fenv.h). [SVN r66693] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 60 ++++++++++------- .../guidelines_for_boost_authors.html | 64 +++++++++---------- doc/html/boost_config/rationale.html | 8 +-- doc/html/index.html | 42 ++++++------ doc/macro_reference.qbk | 5 ++ include/boost/config/stdlib/libstdcpp3.hpp | 6 ++ include/boost/config/stdlib/sgi.hpp | 8 +++ include/boost/config/stdlib/stlport.hpp | 7 ++ include/boost/config/stdlib/vacpp.hpp | 7 ++ 10 files changed, 126 insertions(+), 85 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 95301d82..87d6546a 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
                                PrevUpHome
                                -
                                +
                                diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 5287e835..3a8c72aa 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
                                PrevUpHomeNext
                                -
                                + -

                                -

                                -
                                +

                                Macros that describe defects @@ -1306,9 +1304,7 @@

                                -

                                -

                                -
                                +

                                Macros that describe optional features @@ -1695,6 +1691,26 @@ + +

                                + BOOST_HAS_FENV_H +

                                + + +

                                + Platform, Standard library +

                                + + +

                                + The platform has a <fenv.h>. + <boost/detail/fenv.hpp> + should be included instead of <fenv.h> + for maximum portability. +

                                + + +

                                BOOST_HAS_STDINT_H @@ -2200,7 +2216,7 @@

                                -
                                +
                                -
                                +
                                -

                                -

                                -
                                +

                                Boost Helper Macros @@ -3203,9 +3217,7 @@

                                -

                                -

                                -
                                +

                                Boost Informational Macros @@ -3483,7 +3495,7 @@

                                -
                                +

                                Macros for libraries with separate source code @@ -3500,14 +3512,14 @@ The following macros and helper headers are of use to authors whose libraries include separate source code, and are intended to address several issues:

                                -
                                  -
                                • +
                                    +
                                  • Controlling shared library symbol visibility
                                  • -
                                  • +
                                  • Fixing the ABI of the compiled library
                                  • -
                                  • +
                                  • Selecting which compiled library to link against based upon the compilers settings
                                  • @@ -3516,7 +3528,7 @@ See Guidelines for Authors of Boost Libraries Containing Separate Source

                                    -
                                    +
                                    -
                                    +

                                    ABI Fixing @@ -3729,7 +3741,7 @@ to point to their own prefix/suffix headers if they so wish.

                                    -
                                    +

                                    Automatic library selection diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 820adb10..88034c47 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,14 +22,14 @@
                                    PrevUpHomeNext
                                    -
                                    +
                                    -
                                    - Disabling Compiler Warnings
                                    +
                                    Disabling + Compiler Warnings
                                    Adding New Defect Macros
                                    Adding @@ -61,26 +61,26 @@

                                    Note that:

                                    -
                                    -
                                    +

                                    Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

                                    -
                                    +

                                    The <boost/config.hpp> header @@ -166,9 +166,7 @@ developers list.

                                    -

                                    -

                                    -
                                    +

                                    Using the configure script @@ -289,15 +287,15 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

                                    -
                                      -
                                    • +
                                        +
                                      • Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp provided by boost. This option allows only one configure-generated setup; boost developers should avoid this option, as it incurs the danger of accidentally committing a configure-modified <boost/config/user.hpp> to the cvs repository (something you will not be thanked for!).
                                      • -
                                      • +
                                      • Option 2: give the header a more memorable name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For example create a new sub-directory <boost-root>/boost/config/ user/, and copy the header there; for example @@ -310,9 +308,7 @@
                                    -

                                    -

                                    -
                                    +

                                    User settable options @@ -678,7 +674,7 @@

                                    -
                                    +

                                    Advanced configuration usage @@ -722,7 +718,7 @@

                                    The following usage examples represent just a few of the possibilities:

                                    -
                                    +

                                    Example 1, creating our own frozen configuration @@ -754,7 +750,7 @@ yet supported by boost.

                                    -
                                    +

                                    Example 2: skipping files that you don't need @@ -773,7 +769,7 @@ a dependency on two boost headers.

                                    -
                                    +
                                    -
                                    +

                                    Testing the boost configuration @@ -950,7 +946,7 @@

                                    - +

                                    Last revised: September 26, 2010 at 09:24:20 GMT

                                    Last revised: November 23, 2010 at 03:21:20 GMT


                                    diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 1c7e8c46..338c5e39 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -399,6 +399,11 @@ The platform has the POSIX API `sched_yield`. [[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][ The compiler has native support for SGI style type traits. ]] +[[`BOOST_HAS_FENV_H`][Platform, Standard library][ +The platform has a ``. [@../../../../boost/detail/fenv.hpp +``] should be included instead of `` for maximum +portability. +]] [[`BOOST_HAS_STDINT_H`][Platform][ The platform has a `` ]] diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 01dd4907..585ee4c8 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -54,6 +54,12 @@ # define BOOST_HAS_THREADS #endif +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +# include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif +#endif #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 4d426473..088e0471 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,6 +40,14 @@ # define BOOST_NO_STRINGSTREAM #endif +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +# include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif +#endif + + // // Assume no std::locale without own iostreams (this may be an // incorrect assumption in some cases): diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 0e1c9b2b..098da44e 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,6 +16,13 @@ # endif #endif +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +# include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif +#endif + // // __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS // for versions prior to 4.1(beta) diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 0fc092f0..904e0681 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,6 +12,13 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +# include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif +#endif + // C++0x headers not yet implemented // # define BOOST_NO_0X_HDR_ARRAY From 0fedb0bd925f8a19dd0866251a058157b44da4cc Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Tue, 23 Nov 2010 06:33:35 +0000 Subject: [PATCH 224/435] Added *nix identification macros to Boost.Config; BOOST_NIX, BOOST_GENETIC_NIX, BOOST_TRADEMARK_NIX and BOOST_FUNCTIONAL_NIX. [SVN r66696] --- .../boost_config/boost_macro_reference.html | 90 +++++++++++++++++++ doc/html/index.html | 4 +- doc/macro_reference.qbk | 20 +++++ include/boost/config/compiler/borland.hpp | 3 + include/boost/config/compiler/comeau.hpp | 2 + include/boost/config/compiler/gcc.hpp | 6 ++ include/boost/config/compiler/metrowerks.hpp | 2 + include/boost/config/compiler/sunpro_cc.hpp | 4 + include/boost/config/platform/aix.hpp | 8 ++ include/boost/config/platform/amigaos.hpp | 3 + include/boost/config/platform/beos.hpp | 8 ++ include/boost/config/platform/bsd.hpp | 25 ++++-- include/boost/config/platform/cygwin.hpp | 63 ++++++------- include/boost/config/platform/hpux.hpp | 8 ++ include/boost/config/platform/irix.hpp | 6 ++ include/boost/config/platform/linux.hpp | 8 ++ include/boost/config/platform/macos.hpp | 6 ++ include/boost/config/platform/qnxnto.hpp | 8 ++ include/boost/config/platform/solaris.hpp | 6 ++ include/boost/config/platform/symbian.hpp | 10 ++- include/boost/config/platform/vxworks.hpp | 6 ++ include/boost/config/suffix.hpp | 4 + 22 files changed, 258 insertions(+), 42 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 3a8c72aa..28e23950 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3402,6 +3402,96 @@ + +

                                    + BOOST_LINUX +

                                    + + +

                                    + <boost/config.hpp> +

                                    + + +

                                    + Defined if the system kernel is Linux +

                                    + + + + +

                                    + BOOST_NIX +

                                    + + +

                                    + <boost/config.hpp> +

                                    + + +

                                    + Defined if the system is POSIX compliant +

                                    + + + + +

                                    + BOOST_GENETIC_NIX +

                                    + + +

                                    + <boost/config.hpp> +

                                    + + +

                                    + Defined if the system can trace its ancestry to the original AT&T + codebase or designs, but is not certified by the Open Group. This + is the case for modern open-source BSD systems. +

                                    + + + + +

                                    + BOOST_TRADEMARK_NIX +

                                    + + +

                                    + <boost/config.hpp> +

                                    + + +

                                    + Systems certified as POSIX compliant by the Open Group. These systems + can use the UNIX trademark. Most commercially developed *nix systems + fall into this category. +

                                    + + + + +

                                    + BOOST_FUNCTIONAL_NIX +

                                    + + +

                                    + <boost/config.hpp> +

                                    + + +

                                    + Systems which behave in a manner roughly consistent with POSIX + standards. Linux and Minix fall into this category. +

                                    + + +

                                    BOOST_DINKUMWARE_STDLIB diff --git a/doc/html/index.html b/doc/html/index.html index 40732291..7799a1e1 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

                                    -

                                    +

                                    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                                    @@ -946,7 +946,7 @@
                                    - +

                                    Last revised: November 23, 2010 at 03:21:20 GMT

                                    Last revised: November 23, 2010 at 05:40:40 GMT


                                    diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 338c5e39..c731b09f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -850,6 +850,26 @@ Defined to 1 if the compiler is the Clang compiler. [[`BOOST_WINDOWS`][``][ Defined if the Windows platfrom API is available. ]] +[[`BOOST_LINUX`][``][ +Defined if the system kernel is Linux +]] +[[`BOOST_NIX`][``][ +Defined if the system is POSIX compliant +]] +[[`BOOST_GENETIC_NIX`][``][ +Defined if the system can trace its ancestry to the original AT&T codebase or +designs, but is not certified by the Open Group. This is the case for modern +open-source BSD systems. +]] +[[`BOOST_TRADEMARK_NIX`][``][ +Systems certified as POSIX compliant by the Open Group. These systems can use +the UNIX trademark. Most commercially developed *nix systems fall into this +category. +]] +[[`BOOST_FUNCTIONAL_NIX`][``][ +Systems which behave in a manner roughly consistent with POSIX standards. Linux +and Minix fall into this category. +]] [[`BOOST_DINKUMWARE_STDLIB`][``][ Defined if the dinkumware standard library is in use, takes the same value as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1. diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index a989fd63..2816ab88 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -12,6 +12,9 @@ // // versions check: // we don't support Borland prior to version 5.4: + +#define BOOST_BORLAND __BORLANDC__ + #if __BORLANDC__ < 0x540 # error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp index 278222dc..c2cedb17 100644 --- a/include/boost/config/compiler/comeau.hpp +++ b/include/boost/config/compiler/comeau.hpp @@ -14,6 +14,8 @@ #include "boost/config/compiler/common_edg.hpp" +#define BOOST_COMO __COMO_VERSION__ + #if (__COMO_VERSION__ <= 4245) # if defined(_MSC_VER) && _MSC_VER <= 1300 diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index f633647d..962be754 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -89,6 +89,12 @@ # define BOOST_NO_EXCEPTIONS #endif +// +// Identify cygwin environments +// +#if __CYGWIN__ +# define BOOST_CYGWIN +#endif // // Threading support: Turn this on unconditionally here (except for diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 21083b7a..81854a0f 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -12,6 +12,8 @@ // Metrowerks C++ compiler setup: +#define BOOST_MWERKS __MWERKS__ + // locale support is disabled when linking with the dynamic runtime # ifdef _MSL_NO_LOCALE # define BOOST_NO_STD_LOCALE diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 85fa4625..e718dbb6 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -11,6 +11,10 @@ // Sun C++ compiler setup: +// Macro identifying the Sun compiler + +#define BOOST_SUNCC __SUNPRO_CC + # if __SUNPRO_CC <= 0x500 # define BOOST_NO_MEMBER_TEMPLATES # define BOOST_NO_FUNCTION_TEMPLATE_ORDERING diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp index 894ef42c..ec22a42f 100644 --- a/include/boost/config/platform/aix.hpp +++ b/include/boost/config/platform/aix.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2001 - 2002. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -9,6 +10,13 @@ #define BOOST_PLATFORM "IBM Aix" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + +#define BOOST_AIX 1 + #define BOOST_HAS_UNISTD_H #define BOOST_HAS_NL_TYPES_H #define BOOST_HAS_NANOSLEEP diff --git a/include/boost/config/platform/amigaos.hpp b/include/boost/config/platform/amigaos.hpp index 34bcf412..a1f12f6d 100644 --- a/include/boost/config/platform/amigaos.hpp +++ b/include/boost/config/platform/amigaos.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2002. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -7,6 +8,8 @@ #define BOOST_PLATFORM "AmigaOS" +#define BOOST_AMIGA 1 + #define BOOST_DISABLE_THREADS #define BOOST_NO_CWCHAR #define BOOST_NO_STD_WSTRING diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp index 48c3d8dc..cda00164 100644 --- a/include/boost/config/platform/beos.hpp +++ b/include/boost/config/platform/beos.hpp @@ -1,4 +1,5 @@ // (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -9,6 +10,13 @@ #define BOOST_PLATFORM "BeOS" +#define BOOST_BEOS 1 + +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_NO_CWCHAR #define BOOST_NO_CWCTYPE #define BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index a0142978..9720c777 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -1,6 +1,7 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001. // (C) Copyright Douglas Gregor 2002. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -9,18 +10,30 @@ // generic BSD config options: -#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) -#error "This platform is not BSD" +#if !defined(__FreeBSD__) && \ + !defined(__NetBSD__) && \ + !defined(__OpenBSD__) && \ + !defined(__DragonFly__) + #error "This platform is not BSD" #endif +#define BOOST_NIX 1 +#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #ifdef __FreeBSD__ -#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) + #define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) + #define BOOST_FREEBSD __FreeBSD__ #elif defined(__NetBSD__) -#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) + #define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) + #define BOOST_NETBSD __NetBSD__ #elif defined(__OpenBSD__) -#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) + #define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) + #define BOOST_OPENBSD __OpenBSD__ #elif defined(__DragonFly__) -#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) + #define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) + #define BOOST_DFBSD __DragonFly__ #endif // diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 8e1bcb01..e183772f 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -1,52 +1,53 @@ -// (C) Copyright John Maddock 2001 - 2003. -// 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) +// (C) Copyright John Maddock 2001 - 2003 +// (C) Copyright Bryce Lelbach 2010 +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// See http://www.boost.org for most recent version. -// See http://www.boost.org for most recent version. +#define BOOST_PLATFORM "Cygwin" // Platform name. +#define BOOST_CYGWIN __CYGWIN__ // Boost platform ID macros. -// cygwin specific config options: - -#define BOOST_PLATFORM "Cygwin" #define BOOST_HAS_DIRENT_H #define BOOST_HAS_LOG1P #define BOOST_HAS_EXPM1 -// -// Threading API: -// See if we have POSIX threads, if we do use them, otherwise -// revert to native Win threads. +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + +// See if we have POSIX threads, otherwise revert to native Win threads. #define BOOST_HAS_UNISTD_H #include -#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_PTHREADS -# define BOOST_HAS_SCHED_YIELD -# define BOOST_HAS_GETTIMEOFDAY -# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_SIGACTION + +#if defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) && \ + !defined(BOOST_HAS_WINTHREADS) + #define BOOST_HAS_PTHREADS + #define BOOST_HAS_SCHED_YIELD + #define BOOST_HAS_GETTIMEOFDAY + #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE + #define BOOST_HAS_SIGACTION #else -# if !defined(BOOST_HAS_WINTHREADS) -# define BOOST_HAS_WINTHREADS -# endif -# define BOOST_HAS_FTIME + #if !defined(BOOST_HAS_WINTHREADS) + #define BOOST_HAS_WINTHREADS + #endif + #define BOOST_HAS_FTIME #endif -// -// find out if we have a stdint.h, there should be a better way to do this: -// +// Find out if we have a stdint.h, there should be a better way to do this. #include + #ifdef _STDINT_H -#define BOOST_HAS_STDINT_H + #define BOOST_HAS_STDINT_H #endif -// boilerplate code: #include -// -// Cygwin lies about XSI conformance, there is no nl_types.h: -// +// Cygwin lies about XSI conformance, there is no nl_types.h. #ifdef BOOST_HAS_NL_TYPES_H -# undef BOOST_HAS_NL_TYPES_H + #undef BOOST_HAS_NL_TYPES_H #endif diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp index 19ce68e5..2aefb2d2 100644 --- a/include/boost/config/platform/hpux.hpp +++ b/include/boost/config/platform/hpux.hpp @@ -3,6 +3,7 @@ // (C) Copyright David Abrahams 2002. // (C) Copyright Toon Knapen 2003. // (C) Copyright Boris Gubenko 2006 - 2007. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -13,6 +14,13 @@ #define BOOST_PLATFORM "HP-UX" +#define BOOST_HPUX 1 // platform ID macro + +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // In principle, HP-UX has a nice under the name // However, it has the following problem: // Use of UINT32_C(0) results in "0u l" for the preprocessed source diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp index aeae49c8..4915d813 100644 --- a/include/boost/config/platform/irix.hpp +++ b/include/boost/config/platform/irix.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -11,6 +12,11 @@ #define BOOST_PLATFORM "SGI Irix" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_NO_SWPRINTF // // these are not auto detected by POSIX feature tests: diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 51ae1334..3e7f02c7 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -13,6 +14,13 @@ // make sure we have __GLIBC_PREREQ if available at all #include +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + +#define BOOST_LINUX 1 + // // added to glibc 2.1.1 // We can only test for 2.1 though: diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp index 2780ef99..d018703d 100644 --- a/include/boost/config/platform/macos.hpp +++ b/include/boost/config/platform/macos.hpp @@ -1,6 +1,7 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001 - 2002. // (C) Copyright Bill Kempf 2002. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -13,6 +14,11 @@ #if __MACH__ && !defined(_MSL_USING_MSL_C) +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // Using the Mac OS X system BSD-style C library. # ifndef BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp index b1377c8d..0c54373d 100644 --- a/include/boost/config/platform/qnxnto.hpp +++ b/include/boost/config/platform/qnxnto.hpp @@ -1,4 +1,5 @@ // (C) Copyright Jim Douglas 2005. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -7,8 +8,15 @@ // QNX specific config options: +#define BOOST_QNX 1 + #define BOOST_PLATFORM "QNX" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +//#define BOOST_TRADEMARK_NIX 1 +#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_HAS_UNISTD_H #include diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp index 9f925666..9a9e1f46 100644 --- a/include/boost/config/platform/solaris.hpp +++ b/include/boost/config/platform/solaris.hpp @@ -1,5 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. +// (C) Copyright Bryce Lelbach 2010 // 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,6 +11,11 @@ #define BOOST_PLATFORM "Sun Solaris" +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + #define BOOST_HAS_GETTIMEOFDAY // boilerplate code: diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp index ad379431..798dfac4 100644 --- a/include/boost/config/platform/symbian.hpp +++ b/include/boost/config/platform/symbian.hpp @@ -1,6 +1,7 @@ // (C) Copyright Yuriy Krasnoschek 2009. // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -9,13 +10,16 @@ // symbian specific config options: - #define BOOST_PLATFORM "Symbian" #define BOOST_SYMBIAN 1 - #if defined(__S60_3X__) -// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL +// Open C / C++ plugin was introdused in this SDK, earlier versions don't have +// CRT / STL +# define BOOST_NIX 1 +//# define BOOST_GENETIC_NIX 1 +//# define BOOST_TRADEMARK_NIX 1 +# define BOOST_FUNCTIONAL_NIX 1 # define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK // make sure we have __GLIBC_PREREQ if available at all # include diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 6ec5171e..3b128bf4 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -1,4 +1,5 @@ // (C) Copyright Dustin Spicuzza 2009. +// (C) Copyright Bryce Lelbach 2010 // 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) @@ -23,6 +24,11 @@ #define _POSIX_TIMERS 1 #define _POSIX_THREADS 1 +#define BOOST_NIX 1 +//#define BOOST_GENETIC_NIX 1 +#define BOOST_TRADEMARK_NIX 1 +//#define BOOST_FUNCTIONAL_NIX 1 + // vxworks doesn't work with asio serial ports #define BOOST_ASIO_DISABLE_SERIAL_PORT diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index f1f29114..0aab3d3d 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -639,6 +639,10 @@ namespace std{ using ::typeinfo; } # if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ || defined(_POSIX_SOURCE) # define BOOST_PLATFORM "Generic Unix" +# define BOOST_NIX 1 +//# define BOOST_GENETIC_NIX 1 +//# define BOOST_TRADEMARK_NIX 1 +# define BOOST_FUNCTIONAL_NIX 1 # else # define BOOST_PLATFORM "Unknown" # endif From fe294afd78853c90be4e9235e54e6b6749a7e781 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 25 Nov 2010 10:39:02 +0000 Subject: [PATCH 225/435] Apply Vincente Botet's patches for BOOST_CONSTEXPR. [SVN r66746] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 111 +++++++++++++++--- .../guidelines_for_boost_authors.html | 64 +++++----- doc/html/boost_config/rationale.html | 8 +- doc/html/index.html | 42 ++++--- doc/macro_reference.qbk | 32 +++++ include/boost/config/suffix.hpp | 14 +++ test/config_info.cpp | 21 +--- 8 files changed, 205 insertions(+), 91 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 87d6546a..95301d82 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
                                    PrevUpHome
                                    -
                                    +
                                    diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 28e23950..1ae8f0f8 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
                                    PrevUpHomeNext
                                    -
                                    + -
                                    +

                                    +

                                    +

                                    Macros that describe defects @@ -1304,7 +1306,9 @@

                                    -
                                    +

                                    +

                                    +
                                    -
                                    +
                                    -
                                    +
                                    -
                                    +

                                    +

                                    +

                                    Boost Helper Macros @@ -3214,10 +3220,83 @@

                                    + + +

                                    + BOOST_CONSTEXPR +

                                    + + +

                                    + Some compilers don't support the use of constexpr. + This macro expands to nothing on those compilers, and constexpr elsewhere. For example, + when defining a constexpr function or constructor replace: +

                                    +
                                    constexpr tuple();
                                    +
                                    +

                                    + with: +

                                    +
                                    BOOST_CONSTEXPR tuple();
                                    +
                                    +

                                    +

                                    + + + + +

                                    + BOOST_CONSTEXPR_OR_CONST +

                                    + + +

                                    + Some compilers don't support the use of constexpr. + This macro expands to const + on those compilers, and constexpr + elsewhere. For example, when defining const expr variables replace: + +

                                    +
                                    static constexpr UIntType xor_mask = a;
                                    +
                                    +

                                    + with: +

                                    +
                                    static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
                                    +
                                    +

                                    +

                                    + + + + +

                                    + BOOST_STATIC_CONSTEXPR +

                                    + + +

                                    + This is a shortcut for static + BOOST_CONSTEXPR_OR_CONSTFor + example, when defining const expr variables replace: +

                                    +
                                    static constexpr UIntType xor_mask = a;
                                    +
                                    +

                                    + with: +

                                    +
                                    BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
                                    +
                                    +

                                    +

                                    + +

                                    -
                                    +

                                    +

                                    +

                                    Boost Informational Macros @@ -3585,7 +3664,7 @@

                                    -
                                    +

                                    Macros for libraries with separate source code @@ -3602,14 +3681,14 @@ The following macros and helper headers are of use to authors whose libraries include separate source code, and are intended to address several issues:

                                    -
                                      -
                                    • +
                                        +
                                      • Controlling shared library symbol visibility
                                      • -
                                      • +
                                      • Fixing the ABI of the compiled library
                                      • -
                                      • +
                                      • Selecting which compiled library to link against based upon the compilers settings
                                      • @@ -3618,7 +3697,7 @@ See Guidelines for Authors of Boost Libraries Containing Separate Source

                                        -
                                        +
                                        -
                                        +

                                        ABI Fixing @@ -3831,7 +3910,7 @@ to point to their own prefix/suffix headers if they so wish.

                                        -
                                        +

                                        Automatic library selection diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 88034c47..820adb10 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,14 +22,14 @@
                                        PrevUpHomeNext
                                        -
                                        +
                                        -
                                        Disabling - Compiler Warnings
                                        +
                                        + Disabling Compiler Warnings
                                        Adding New Defect Macros
                                        Adding @@ -61,26 +61,26 @@

                                        Note that:

                                        -
                                        -
                                        +

                                        Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

                                        -
                                        +

                                        The <boost/config.hpp> header @@ -166,7 +166,9 @@ developers list.

                                        -
                                        +

                                        +

                                        +

                                        Using the configure script @@ -287,15 +289,15 @@ (located under <boost-root>/boost/config/). There are two ways you can use this header:

                                        -
                                          -
                                        • +
                                            +
                                          • Option 1: copy the header into <boost-root>/boost/config/ so that it replaces the default user.hpp provided by boost. This option allows only one configure-generated setup; boost developers should avoid this option, as it incurs the danger of accidentally committing a configure-modified <boost/config/user.hpp> to the cvs repository (something you will not be thanked for!).
                                          • -
                                          • +
                                          • Option 2: give the header a more memorable name, and place it somewhere convenient; then, define the macro BOOST_USER_CONFIG to point to it. For example create a new sub-directory <boost-root>/boost/config/ user/, and copy the header there; for example @@ -308,7 +310,9 @@
                                        -
                                        +

                                        +

                                        +

                                        User settable options @@ -674,7 +678,7 @@

                                        -
                                        +

                                        Advanced configuration usage @@ -718,7 +722,7 @@

                                        The following usage examples represent just a few of the possibilities:

                                        -
                                        +

                                        Example 1, creating our own frozen configuration @@ -750,7 +754,7 @@ yet supported by boost.

                                        -
                                        +

                                        Example 2: skipping files that you don't need @@ -769,7 +773,7 @@ a dependency on two boost headers.

                                        -
                                        +
                                        -
                                        +

                                        Testing the boost configuration @@ -946,7 +950,7 @@

                                        - +

                                        Last revised: November 23, 2010 at 05:40:40 GMT

                                        Last revised: November 25, 2010 at 10:30:55 GMT


                                        diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index c731b09f..f6963528 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -803,6 +803,38 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally used to create a mangled name in combination with a predefined macro such a \_\_LINE__. ]] +[[`BOOST_CONSTEXPR`][ +Some compilers don't support the use of `constexpr`. This macro expands to nothing on those compilers, and `constexpr` +elsewhere. For example, when defining a constexpr function or constructor replace: +`` + constexpr tuple(); +`` +with: +`` + BOOST_CONSTEXPR tuple(); +`` +]] +[[`BOOST_CONSTEXPR_OR_CONST`][ +Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr` +elsewhere. For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a; +`` +]] +[[`BOOST_STATIC_CONSTEXPR`][ +This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`For example, when defining const expr variables replace: +`` + static constexpr UIntType xor_mask = a; +`` +with: +`` + BOOST_STATIC_CONSTEXPR UIntType xor_mask = a; +`` +]] ] [endsect] diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 0aab3d3d..4e608d24 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -654,5 +654,19 @@ namespace std{ using ::typeinfo; } # ifndef BOOST_GPU_ENABLED # define BOOST_GPU_ENABLED # endif + +// +// constexpr workarounds +// +#if defined(BOOST_NO_CONSTEXPR) +#define BOOST_CONSTEXPR +#define BOOST_CONSTEXPR_OR_CONST const +#else +#define BOOST_CONSTEXPR constexpr +#define BOOST_CONSTEXPR_OR_CONST constexpr +#endif + +#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST + #endif diff --git a/test/config_info.cpp b/test/config_info.cpp index fd5261c8..762e6c56 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1078,30 +1078,15 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); PRINT_MACRO(BOOST_NO_VOID_RETURNS); - - - - - - - - - - - - - - - - - - // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_MSVC); PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE); PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0)); + PRINT_MACRO(BOOST_CONSTEXPR); + PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST); + PRINT_MACRO(BOOST_STATIC_CONSTEXPR); } void print_separator() From dba9cf164a9385868b1534370b978bac34b8faad Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Fri, 26 Nov 2010 04:43:56 +0000 Subject: [PATCH 226/435] Should fix issue with fenv.h detection on Darwin. [SVN r66762] --- include/boost/config/stdlib/libstdcpp3.hpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 585ee4c8..7de49e5e 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -54,11 +54,9 @@ # define BOOST_HAS_THREADS #endif -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +#if !defined(CYGWIN) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif +# define BOOST_HAS_FENV_H #endif #if !defined(_GLIBCPP_USE_LONG_LONG) \ From 9a9ef3a20bbc197af8362e10675f92668c3a9537 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 27 Nov 2010 09:29:11 +0000 Subject: [PATCH 227/435] Revert last patch - it conflicts with existing definition. [SVN r66783] --- include/boost/config/compiler/gcc.hpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 962be754..7ce7fe6b 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -89,13 +89,6 @@ # define BOOST_NO_EXCEPTIONS #endif -// -// Identify cygwin environments -// -#if __CYGWIN__ -# define BOOST_CYGWIN -#endif - // // Threading support: Turn this on unconditionally here (except for // those platforms where we can know for sure). It will get turned off again From 4f7a0d38145d4aba89ac96f505cd4cdc55139d42 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Sat, 27 Nov 2010 21:43:52 +0000 Subject: [PATCH 228/435] Added *nix identification macros to Boost.Config; BOOST_NIX, BOOST_GENETIC_NIX, BOOST_TRADEMARK_NIX and BOOST_FUNCTIONAL_NIX. [SVN r66804] --- doc/macro_reference.qbk | 10 +-- include/boost/config/compiler/visualc.hpp | 3 + include/boost/config/platform/cygwin.hpp | 3 + include/boost/config/platform/win32.hpp | 1 - include/boost/config/stdlib/libstdcpp3.hpp | 9 ++- include/boost/config/stdlib/sgi.hpp | 5 +- include/boost/config/stdlib/stlport.hpp | 5 +- include/boost/config/stdlib/vacpp.hpp | 5 +- test/boost_no_fenv_h.ipp | 78 ++++++++++++++++++++++ test/no_fenv_h_fail.cpp | 33 +++++++++ test/no_fenv_h_pass.cpp | 33 +++++++++ 11 files changed, 162 insertions(+), 23 deletions(-) create mode 100644 test/boost_no_fenv_h.ipp create mode 100644 test/no_fenv_h_fail.cpp create mode 100644 test/no_fenv_h_pass.cpp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index f6963528..eae6572f 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -71,6 +71,11 @@ The Platform does not provide `` and ``. [[`BOOST_NO_CWCTYPE`][Platform][ The Platform does not provide `` and ``. ]] +[[`BOOST_NO_FENV_H`][Platform, Standard library][ +The C standard library doesn't provide ``. [@../../../../boost/detail/fenv.hpp +``] should be included instead of `` for maximum +portability on platforms which do provide ``. +]] [[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][ The compiler fails to compile a nested class that has a dependent base class: `` @@ -399,11 +404,6 @@ The platform has the POSIX API `sched_yield`. [[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][ The compiler has native support for SGI style type traits. ]] -[[`BOOST_HAS_FENV_H`][Platform, Standard library][ -The platform has a ``. [@../../../../boost/detail/fenv.hpp -``] should be included instead of `` for maximum -portability. -]] [[`BOOST_HAS_STDINT_H`][Platform][ The platform has a `` ]] diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 15b58b38..38789367 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -37,6 +37,9 @@ // #endif +/// Visual Studio has no fenv.h +#define BOOST_NO_FENV_H + #if (_MSC_VER <= 1300) // 1300 == VC++ 7.0 # if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index e183772f..aba37193 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -43,6 +43,9 @@ #define BOOST_HAS_STDINT_H #endif +/// Cygwin has no fenv.h +#define BOOST_NO_FENV_H + #include // Cygwin lies about XSI conformance, there is no nl_types.h. diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index 690f464a..72c3dceb 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -31,7 +31,6 @@ # define BOOST_SYMBOL_IMPORT __declspec(dllimport) #endif - #if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0))) # define BOOST_HAS_STDINT_H # define __STDC_LIMIT_MACROS diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 7de49e5e..a6bf80c3 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -54,11 +54,6 @@ # define BOOST_HAS_THREADS #endif -#if !defined(CYGWIN) -# include -# define BOOST_HAS_FENV_H -#endif - #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ && defined(BOOST_HAS_LONG_LONG) @@ -67,6 +62,10 @@ # undef BOOST_HAS_LONG_LONG #endif +#if !defined(CYGWIN) +# include +#endif + #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 088e0471..fbbf669a 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,11 +40,8 @@ # define BOOST_NO_STRINGSTREAM #endif -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +#if !defined(CYGWIN) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 098da44e..53bc10b2 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,11 +16,8 @@ # endif #endif -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +#if !defined(CYGWIN) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif // diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 904e0681..a92537bb 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,11 +12,8 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +#if !defined(CYGWIN) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif // C++0x headers not yet implemented diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp new file mode 100644 index 00000000..97ed5124 --- /dev/null +++ b/test/boost_no_fenv_h.ipp @@ -0,0 +1,78 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010. +// 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_FENV_H +// TITLE: fenv.h +// DESCRIPTION: There is no POSIX available. If is +// available, should be included +// instead of directly including . + +#include + +namespace boost_no_fenv_h { + +int test() +{ + /// POSIX required typedefs + typedef ::fenv_t has_fenv_t; + typedef ::fexcept_t has_fexcept_t; + + /// POSIX required macros + #if !defined(FE_DIVBYZERO) + #error platform does not define FE_DIVBYZERO + #endif + + #if !defined(FE_INEXACT) + #error platform does not define FE_INEXACT + #endif + + #if !defined(FE_INVALID) + #error platform does not define FE_INVALID + #endif + + #if !defined(FE_OVERFLOW) + #error platform does not define FE_OVERFLOW + #endif + + #if !defined(FE_UNDERFLOW) + #error platform does not define FE_UNDERFLOW + #endif + + #if !defined(FE_DOWNWARD) + #error platform does not define FE_DOWNWARD + #endif + + #if !defined(FE_TONEAREST) + #error platform does not define FE_TONEAREST + #endif + + #if !defined(FE_UPWARD) + #error platform does not define FE_UPWARD + #endif + + #if !defined(FE_DFL_ENV) + #error platform does not define FE_DFL_ENV + #endif + + int (*has_feclearexcept)(int) = ::feclearexcept; + int (*has_fegetenv)(fenv_t*) = ::fegetenv; + int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept; + int (*has_fegetround)(void) = ::fegetround; + int (*has_feholdexcept)(fenv_t*) = ::feholdexcept; + int (*has_feraiseexcept)(int) = ::feraiseexcept; + int (*has_fesetenv)(const fenv_t*) = ::fesetenv; + int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag; + int (*has_fesetround)(int) = ::fesetround; + int (*has_fetestexcept)(int) = ::fetestexcept; + int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv; + + return 0; +} + +} + diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp new file mode 100644 index 00000000..9b2f4103 --- /dev/null +++ b/test/no_fenv_h_fail.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// 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. + +// Test file for macro BOOST_NO_FENV_H +// This file should not compile, if it does then +// BOOST_NO_FENV_H should not be defined. +// See file boost_no_fenv_h.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_FENV_H +#include "boost_no_fenv_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp new file mode 100644 index 00000000..573d6244 --- /dev/null +++ b/test/no_fenv_h_pass.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// 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. + +// Test file for macro BOOST_NO_FENV_H +// This file should compile, if it does not then +// BOOST_NO_FENV_H should be defined. +// See file boost_no_fenv_h.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_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + From a81a14cd750de974d47c0ea1ebc1e4e673944e81 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 28 Nov 2010 17:02:32 +0000 Subject: [PATCH 229/435] Fix for variadic macro support. [SVN r66824] --- include/boost/config/compiler/common_edg.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 682c73af..9042578b 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -62,10 +62,13 @@ #if (__EDG_VERSION__ < 310) # define BOOST_NO_EXTERN_TEMPLATE #endif -#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG) +#if (__EDG_VERSION__ <= 310) // No support for initializer lists # define BOOST_NO_INITIALIZER_LISTS #endif +#if (__EDG_VERSION__ < 400) +# define BOOST_NO_VARIADIC_MACROS +#endif #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS @@ -88,7 +91,6 @@ #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS #define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS #ifdef c_plusplus // EDG has "long long" in non-strict mode From 195a8e300448776488e61bb5e69d786c79d59691 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Mon, 29 Nov 2010 00:22:13 +0000 Subject: [PATCH 230/435] Fix unistd.h include guards. [SVN r66833] --- include/boost/config/stdlib/libstdcpp3.hpp | 8 +++++++- include/boost/config/stdlib/sgi.hpp | 8 +++++++- include/boost/config/stdlib/stlport.hpp | 8 +++++++- include/boost/config/stdlib/vacpp.hpp | 8 +++++++- 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index a6bf80c3..ab9797bb 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -62,7 +62,13 @@ # undef BOOST_HAS_LONG_LONG #endif -#if !defined(CYGWIN) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE) # include #endif diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index fbbf669a..a1a6e7a8 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,7 +40,13 @@ # define BOOST_NO_STRINGSTREAM #endif -#if !defined(CYGWIN) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE) # include #endif diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 53bc10b2..66aaaaaf 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,7 +16,13 @@ # endif #endif -#if !defined(CYGWIN) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE) # include #endif diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index a92537bb..b61efa98 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,7 +12,13 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES -#if !defined(CYGWIN) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE) # include #endif From 20653705ab9abb64986e61e7a66d3724c1d174e6 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Mon, 29 Nov 2010 01:06:33 +0000 Subject: [PATCH 231/435] Forget a ')'. [SVN r66834] --- include/boost/config/stdlib/libstdcpp3.hpp | 2 +- include/boost/config/stdlib/sgi.hpp | 2 +- include/boost/config/stdlib/stlport.hpp | 2 +- include/boost/config/stdlib/vacpp.hpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index ab9797bb..75bfc4aa 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -68,7 +68,7 @@ || defined(unix) \ || defined(__APPLE__) \ || defined(__APPLE) \ - || defined(APPLE) + || defined(APPLE)) # include #endif diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index a1a6e7a8..5731fe5e 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -46,7 +46,7 @@ || defined(unix) \ || defined(__APPLE__) \ || defined(__APPLE) \ - || defined(APPLE) + || defined(APPLE)) # include #endif diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 66aaaaaf..85176a4d 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -22,7 +22,7 @@ || defined(unix) \ || defined(__APPLE__) \ || defined(__APPLE) \ - || defined(APPLE) + || defined(APPLE)) # include #endif diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index b61efa98..3fcf6e05 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -18,7 +18,7 @@ || defined(unix) \ || defined(__APPLE__) \ || defined(__APPLE) \ - || defined(APPLE) + || defined(APPLE)) # include #endif From 442321964995e740fbf2facd5830352bb3faa2e0 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 30 Nov 2010 18:01:55 +0000 Subject: [PATCH 232/435] Don't undef BOOST_AUTO_LINK_NOMANGLE. Refs #4902. [SVN r66906] --- include/boost/config/auto_link.hpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index e562caff..f5a0a007 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -414,7 +414,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. #if defined(BOOST_DYN_LINK) # undef BOOST_DYN_LINK #endif -#if defined(BOOST_AUTO_LINK_NOMANGLE) -# undef BOOST_AUTO_LINK_NOMANGLE -#endif From 7535b8d150ca503fb6113df798434d0e6a723ad4 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Fri, 3 Dec 2010 23:36:56 +0000 Subject: [PATCH 233/435] 1.45.0 prep [SVN r66992] --- 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 bdb68d44..b031f6fc 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 104500 +#define BOOST_VERSION 104600 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_45" +#define BOOST_LIB_VERSION "1_46" #endif From bbb4a34504f11ad11cd235cc3d9a9de02f73a9d3 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Thu, 6 Jan 2011 02:38:20 +0000 Subject: [PATCH 234/435] Support for PathScale EKOPath Compiler Suite, version 4.0.0. [SVN r67707] --- include/boost/config/compiler/pathscale.hpp | 82 +++++++++++++++++++ .../boost/config/select_compiler_config.hpp | 44 +++++----- 2 files changed, 107 insertions(+), 19 deletions(-) create mode 100644 include/boost/config/compiler/pathscale.hpp diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp new file mode 100644 index 00000000..295b63a2 --- /dev/null +++ b/include/boost/config/compiler/pathscale.hpp @@ -0,0 +1,82 @@ +// (C) Copyright Bryce Lelbach 2011 + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// PathScale EKOPath C++ Compiler + +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version" __PATHSCALE__ +#endif + +#if __PATHCC__ >= 4 +# define BOOST_MSVC6_MEMBER_TEMPLATES +# define BOOST_HAS_UNISTD_H +# define BOOST_HAS_STDINT_H +# define BOOST_HAS_SIGACTION +# define BOOST_HAS_SCHED_YIELD +# define BOOST_HAS_THREADS +# 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_HAS_LONG_LONG +# define BOOST_HAS_LOG1P +# define BOOST_HAS_GETTIMEOFDAY +# define BOOST_HAS_EXPM1 +# define BOOST_HAS_DIRENT_H +# define BOOST_HAS_CLOCK_GETTIME +# define BOOST_NO_VARIADIC_TEMPLATES +# define BOOST_NO_UNICODE_LITERALS +# define BOOST_NO_TEMPLATE_ALIASES +# define BOOST_NO_STD_UNORDERED +# define BOOST_NO_STATIC_ASSERT +# define BOOST_NO_SFINAE_EXPR +# define BOOST_NO_SCOPED_ENUMS +# define BOOST_NO_RVALUE_REFERENCES +# define BOOST_NO_RAW_LITERALS +# define BOOST_NO_NULLPTR +# define BOOST_NO_NUMERIC_LIMITS_LOWEST +# define BOOST_NO_LAMBDAS +# define BOOST_NO_INITIALIZER_LISTS +# define BOOST_NO_MS_INT64_NUMERIC_LIMITS +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +# define BOOST_NO_DELETED_FUNCTIONS +# define BOOST_NO_DEFAULTED_FUNCTIONS +# define BOOST_NO_DECLTYPE +# define BOOST_NO_CONSTEXPR +# define BOOST_NO_CONCEPTS +# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION +# define BOOST_NO_CHAR32_T +# define BOOST_NO_CHAR16_T +# define BOOST_NO_AUTO_MULTIDECLARATIONS +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_0X_HDR_UNORDERED_SET +# define BOOST_NO_0X_HDR_UNORDERED_MAP +# define BOOST_NO_0X_HDR_TYPEINDEX +# define BOOST_NO_0X_HDR_TUPLE +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_SYSTEM_ERROR +# define BOOST_NO_0X_HDR_REGEX +# define BOOST_NO_0X_HDR_RATIO +# define BOOST_NO_0X_HDR_RANDOM +# define BOOST_NO_0X_HDR_MUTEX +# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS +# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_FORWARD_LIST +# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +# define BOOST_NO_0X_HDR_CONDITION_VARIABLE +# define BOOST_NO_0X_HDR_CONCEPTS +# define BOOST_NO_0X_HDR_CODECVT +# define BOOST_NO_0X_HDR_CHRONO +#endif + diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index f9b086ad..321743d7 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -14,25 +14,27 @@ // one identification macro for each of the // compilers we support: -# define BOOST_CXX_GCCXML 0 -# define BOOST_CXX_CLANG 0 -# define BOOST_CXX_COMO 0 -# define BOOST_CXX_DMC 0 -# define BOOST_CXX_INTEL 0 -# define BOOST_CXX_GNUC 0 -# define BOOST_CXX_KCC 0 -# define BOOST_CXX_SGI 0 -# define BOOST_CXX_TRU64 0 -# define BOOST_CXX_GHS 0 -# define BOOST_CXX_BORLAND 0 -# define BOOST_CXX_CW 0 -# define BOOST_CXX_SUNPRO 0 -# define BOOST_CXX_HPACC 0 -# define BOOST_CXX_MPW 0 -# define BOOST_CXX_IBMCPP 0 -# define BOOST_CXX_MSVC 0 -# define BOOST_CXX_PGI 0 -# define BOOST_CXX_NVCC 0 +# define BOOST_CXX_GCCXML 0 +# define BOOST_CXX_NVCC 0 +# define BOOST_CXX_COMO 0 +# define BOOST_CXX_PATHSCALE 0 +# define BOOST_CXX_CLANG 0 +# define BOOST_CXX_DMC 0 +# define BOOST_CXX_INTEL 0 +# define BOOST_CXX_GNUC 0 +# define BOOST_CXX_KCC 0 +# define BOOST_CXX_SGI 0 +# define BOOST_CXX_TRU64 0 +# define BOOST_CXX_GHS 0 +# define BOOST_CXX_BORLAND 0 +# define BOOST_CXX_CW 0 +# define BOOST_CXX_SUNPRO 0 +# define BOOST_CXX_HPACC 0 +# define BOOST_CXX_MPW 0 +# define BOOST_CXX_IBMCPP 0 +# define BOOST_CXX_MSVC 0 +# define BOOST_CXX_PGI 0 +# define BOOST_CXX_NVCC 0 // locate which compiler we are using and define @@ -50,6 +52,10 @@ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" +#elif defined __PATHSCALE__ +// PathScale EKOPath compiler (has to come before clang and gcc) +# define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp" + #elif defined __clang__ // Clang C++ emulates GCC, so it has to appear early. # define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp" From fb93903c024b9722d953be23fab8c04136645102 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Mon, 10 Jan 2011 03:04:31 +0000 Subject: [PATCH 235/435] Re-added Qi numeric literals as they no longer break Qi auto-magic. [SVN r67902] --- include/boost/config/compiler/pathscale.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 295b63a2..13ede88d 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -9,7 +9,7 @@ // PathScale EKOPath C++ Compiler #ifndef BOOST_COMPILER -# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version" __PATHSCALE__ +# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__ #endif #if __PATHCC__ >= 4 From 547d713ef7034e0b4518b134fd100a04cb3f2d01 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 13 Jan 2011 13:43:08 +0000 Subject: [PATCH 236/435] Remove old dead code. [SVN r68097] --- include/boost/limits.hpp | 46 +++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/include/boost/limits.hpp b/include/boost/limits.hpp index 084b8739..d3747a1a 100644 --- a/include/boost/limits.hpp +++ b/include/boost/limits.hpp @@ -19,29 +19,40 @@ # include #endif -#include // for BOOST_HAS_XINT, etc. - #if (defined(BOOST_HAS_LONG_LONG) && defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)) \ || (defined(BOOST_HAS_MS_INT64) && defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)) // Add missing specializations for numeric_limits: -#if !defined(BOOST_HAS_XINT) || !(BOOST_HAS_XINT) -#error "Shouldn't have gotten here based on preceeding preprocessor statements" +#ifdef BOOST_HAS_MS_INT64 +# define BOOST_LLT __int64 +# define BOOST_ULLT unsigned __int64 +#else +# define BOOST_LLT ::boost::long_long_type +# define BOOST_ULLT ::boost::ulong_long_type #endif -#define BOOST_LLT ::boost::detail::xint_t -#define BOOST_ULLT ::boost::detail::uxint_t #include // for CHAR_BIT namespace std { template<> - class numeric_limits< BOOST_LLT > + class numeric_limits { public: BOOST_STATIC_CONSTANT(bool, is_specialized = true); - static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MIN; } - static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_XINT_MAX; } +#ifdef BOOST_HAS_MS_INT64 + static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x8000000000000000i64; } + static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x7FFFFFFFFFFFFFFFi64; } +#elif defined(LLONG_MAX) + static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MIN; } + static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MAX; } +#elif defined(LONGLONG_MAX) + static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MIN; } + static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MAX; } +#else + static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 1LL << (sizeof(BOOST_LLT) * CHAR_BIT - 1); } + static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~(min)(); } +#endif BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1); BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000); BOOST_STATIC_CONSTANT(bool, is_signed = true); @@ -77,13 +88,24 @@ namespace std }; template<> - class numeric_limits< BOOST_ULLT > + class numeric_limits { public: BOOST_STATIC_CONSTANT(bool, is_specialized = true); - static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return (BOOST_ULLT) 0u; } - static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return BOOST_UXINT_MAX; } +#ifdef BOOST_HAS_MS_INT64 + static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0ui64; } + static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0xFFFFFFFFFFFFFFFFui64; } +#elif defined(ULLONG_MAX) && defined(ULLONG_MIN) + static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MIN; } + static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MAX; } +#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN) + static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MIN; } + static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MAX; } +#else + static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0uLL; } + static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~0uLL; } +#endif BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT); BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000); BOOST_STATIC_CONSTANT(bool, is_signed = false); From 580f4e72f70004519ddc3268c25c0be26c32a9a0 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Fri, 14 Jan 2011 02:35:58 +0000 Subject: [PATCH 237/435] Replacing the use of with across Boost. On Linux, GNU's libstdc++, which is the default stdlib for icc and clang, cannot parse the header in version 4.5+ (which thankfully neither compiler advises the use of yet), as it's original C++98-friendly implementation has been replaced with a gnu++0x implementation. is a portable implementation of , providing boost::detail::setfill, boost::detail::setbase, boost::detail::setw, boost::detail::setprecision, boost::detail::setiosflags and boost::detail::resetiosflags. [SVN r68140] --- test/config_info.cpp | 8 ++++---- test/link/link_test.cpp | 2 +- test/math_info.cpp | 24 ++++++++++++------------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/test/config_info.cpp b/test/config_info.cpp index 762e6c56..6d752659 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include @@ -44,7 +44,7 @@ void print_macro(const char* name, const char* value) if(0 != strcmp(name, value+1)) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << std::setw(width); + std::cout << boost::detail::setw(width); cout.setf(istream::left, istream::adjustfield); std::cout << name; if(value[1]) @@ -66,7 +66,7 @@ template void print_expression(const char* expression, T val) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << std::setw(width); + std::cout << boost::detail::setw(width); std::cout.setf(istream::left, istream::adjustfield); std::cout << expression << "=" << val << std::endl; } @@ -85,7 +85,7 @@ void print_byte_order(const char* what, T /* t */ ) const char* p = reinterpret_cast(&val); for(i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << std::setw(width); + std::cout << boost::detail::setw(width); std::cout.setf(istream::left, istream::adjustfield); std::cout << what << "="; for(i = 0; i < sizeof(T); ++i) diff --git a/test/link/link_test.cpp b/test/link/link_test.cpp index be80bfcd..64e77ed4 100644 --- a/test/link/link_test.cpp +++ b/test/link/link_test.cpp @@ -10,7 +10,7 @@ #include "link_test.hpp" #include -#include +#include bool BOOST_CONFIG_DECL check_options( bool m_dyn_link, diff --git a/test/math_info.cpp b/test/math_info.cpp index e06c7454..b91d8a5e 100644 --- a/test/math_info.cpp +++ b/test/math_info.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -37,7 +37,7 @@ void print_macro(const char* name, const char* value) if(0 != std::strcmp(name, value+1)) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << std::setw(width); + std::cout << boost::detail::setw(width); std::cout.setf(std::istream::left, std::istream::adjustfield); std::cout << name; if(value[1]) @@ -59,9 +59,9 @@ template void print_expression(const char* expression, T val) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << std::setw(width); + std::cout << boost::detail::setw(width); std::cout.setf(std::istream::left, std::istream::adjustfield); - std::cout << std::setprecision(std::numeric_limits::digits10+2); + std::cout << boost::detail::setprecision(std::numeric_limits::digits10+2); std::cout << expression << "=" << val << std::endl; } @@ -81,9 +81,9 @@ void print_limits(T, const char* name) std::cout << " is_specialized = " << std::numeric_limits::is_specialized << std::endl; std::cout << - " min" "() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::min)() << std::endl; + " min" "() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::min)() << std::endl; std::cout << - " max" "() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::max)() << std::endl; + " max" "() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::max)() << std::endl; std::cout << " digits = " << std::numeric_limits::digits << std::endl; std::cout << @@ -98,9 +98,9 @@ void print_limits(T, const char* name) " radix = " << std::numeric_limits::radix << std::endl; std::cout << - " epsilon() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::epsilon)() << std::endl; + " epsilon() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::epsilon)() << std::endl; std::cout << - " round_error() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::round_error)() << std::endl; + " round_error() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::round_error)() << std::endl; std::cout << " min_exponent = " << std::numeric_limits::min_exponent << std::endl; @@ -122,13 +122,13 @@ void print_limits(T, const char* name) " has_denorm_loss = " << std::numeric_limits::has_denorm_loss << std::endl; std::cout << - " infinity() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::infinity)() << std::endl; + " infinity() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::infinity)() << std::endl; std::cout << - " quiet_NaN() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::quiet_NaN)() << std::endl; + " quiet_NaN() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::quiet_NaN)() << std::endl; std::cout << - " signaling_NaN() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::signaling_NaN)() << std::endl; + " signaling_NaN() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::signaling_NaN)() << std::endl; std::cout << - " denorm_min() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::denorm_min)() << std::endl; + " denorm_min() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::denorm_min)() << std::endl; std::cout << From 90760b4c2ff8a7d69ab1a97efe00316e96dff119 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Fri, 14 Jan 2011 03:01:26 +0000 Subject: [PATCH 238/435] More pathscale stuff. [SVN r68143] --- include/boost/config/stdlib/libstdcpp3.hpp | 2 ++ include/boost/config/stdlib/roguewave.hpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 75bfc4aa..c048b896 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -9,6 +9,8 @@ // config for libstdc++ v3 // not much to go in here: +#define BOOST_GNU_STDLIB 1 + #ifdef __GLIBCXX__ #define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__) #else diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index dcd0af84..31c7bdda 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -10,6 +10,8 @@ // Rogue Wave std lib: +#define BOOST_RW_STDLIB 1 + #if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) # include # if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER) From c32a3915dbbba7c0dd07d9ed13bfc4b06889afd1 Mon Sep 17 00:00:00 2001 From: Bryce Adelstein-Lelbach Date: Sat, 15 Jan 2011 02:23:46 +0000 Subject: [PATCH 239/435] Make include and put the functions in the boost::detail namespace if not on clang- or intel-linux. [SVN r68165] --- include/boost/config/compiler/gcc.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 7ce7fe6b..cd24a245 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -13,6 +13,8 @@ // GNU C++ compiler setup: +#define BOOST_GCC 1 + #if __GNUC__ < 3 # if __GNUC_MINOR__ == 91 // egcs 1.1 won't parse shared_ptr.hpp without this: From b12a7589b984d7bc9b2f527b36eab3417f4e6b6e Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Sat, 15 Jan 2011 08:11:51 +0000 Subject: [PATCH 240/435] Revert [67111] (addition of boost/detail/iomanip.hpp) and all the commits that depend on it. ([68137], [68140], [68141], [68154], and [68165]). [SVN r68168] --- include/boost/config/compiler/gcc.hpp | 2 -- test/config_info.cpp | 8 ++++---- test/link/link_test.cpp | 2 +- test/math_info.cpp | 24 ++++++++++++------------ 4 files changed, 17 insertions(+), 19 deletions(-) diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index cd24a245..7ce7fe6b 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -13,8 +13,6 @@ // GNU C++ compiler setup: -#define BOOST_GCC 1 - #if __GNUC__ < 3 # if __GNUC_MINOR__ == 91 // egcs 1.1 won't parse shared_ptr.hpp without this: diff --git a/test/config_info.cpp b/test/config_info.cpp index 6d752659..762e6c56 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include @@ -44,7 +44,7 @@ void print_macro(const char* name, const char* value) if(0 != strcmp(name, value+1)) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << boost::detail::setw(width); + std::cout << std::setw(width); cout.setf(istream::left, istream::adjustfield); std::cout << name; if(value[1]) @@ -66,7 +66,7 @@ template void print_expression(const char* expression, T val) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << boost::detail::setw(width); + std::cout << std::setw(width); std::cout.setf(istream::left, istream::adjustfield); std::cout << expression << "=" << val << std::endl; } @@ -85,7 +85,7 @@ void print_byte_order(const char* what, T /* t */ ) const char* p = reinterpret_cast(&val); for(i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << boost::detail::setw(width); + std::cout << std::setw(width); std::cout.setf(istream::left, istream::adjustfield); std::cout << what << "="; for(i = 0; i < sizeof(T); ++i) diff --git a/test/link/link_test.cpp b/test/link/link_test.cpp index 64e77ed4..be80bfcd 100644 --- a/test/link/link_test.cpp +++ b/test/link/link_test.cpp @@ -10,7 +10,7 @@ #include "link_test.hpp" #include -#include +#include bool BOOST_CONFIG_DECL check_options( bool m_dyn_link, diff --git a/test/math_info.cpp b/test/math_info.cpp index b91d8a5e..e06c7454 100644 --- a/test/math_info.cpp +++ b/test/math_info.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include @@ -37,7 +37,7 @@ void print_macro(const char* name, const char* value) if(0 != std::strcmp(name, value+1)) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << boost::detail::setw(width); + std::cout << std::setw(width); std::cout.setf(std::istream::left, std::istream::adjustfield); std::cout << name; if(value[1]) @@ -59,9 +59,9 @@ template void print_expression(const char* expression, T val) { for(unsigned i = 0; i < indent; ++i) std::cout.put(' '); - std::cout << boost::detail::setw(width); + std::cout << std::setw(width); std::cout.setf(std::istream::left, std::istream::adjustfield); - std::cout << boost::detail::setprecision(std::numeric_limits::digits10+2); + std::cout << std::setprecision(std::numeric_limits::digits10+2); std::cout << expression << "=" << val << std::endl; } @@ -81,9 +81,9 @@ void print_limits(T, const char* name) std::cout << " is_specialized = " << std::numeric_limits::is_specialized << std::endl; std::cout << - " min" "() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::min)() << std::endl; + " min" "() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::min)() << std::endl; std::cout << - " max" "() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::max)() << std::endl; + " max" "() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::max)() << std::endl; std::cout << " digits = " << std::numeric_limits::digits << std::endl; std::cout << @@ -98,9 +98,9 @@ void print_limits(T, const char* name) " radix = " << std::numeric_limits::radix << std::endl; std::cout << - " epsilon() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::epsilon)() << std::endl; + " epsilon() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::epsilon)() << std::endl; std::cout << - " round_error() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::round_error)() << std::endl; + " round_error() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::round_error)() << std::endl; std::cout << " min_exponent = " << std::numeric_limits::min_exponent << std::endl; @@ -122,13 +122,13 @@ void print_limits(T, const char* name) " has_denorm_loss = " << std::numeric_limits::has_denorm_loss << std::endl; std::cout << - " infinity() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::infinity)() << std::endl; + " infinity() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::infinity)() << std::endl; std::cout << - " quiet_NaN() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::quiet_NaN)() << std::endl; + " quiet_NaN() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::quiet_NaN)() << std::endl; std::cout << - " signaling_NaN() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::signaling_NaN)() << std::endl; + " signaling_NaN() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::signaling_NaN)() << std::endl; std::cout << - " denorm_min() = " << boost::detail::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::denorm_min)() << std::endl; + " denorm_min() = " << std::setprecision(std::numeric_limits::digits10 + 2) << (std::numeric_limits::denorm_min)() << std::endl; std::cout << From a1865a712d3d868914a2defbf514389c7d4b5a55 Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Mon, 17 Jan 2011 04:51:54 +0000 Subject: [PATCH 241/435] Revert addition of BOOST_NIX, etc and everything tied to it. ([66696], [66783], [66804], [66833], and [66834]) [SVN r68201] --- .../boost_config/boost_macro_reference.html | 90 ------------------- doc/html/index.html | 4 +- doc/macro_reference.qbk | 30 ++----- include/boost/config/compiler/borland.hpp | 3 - include/boost/config/compiler/comeau.hpp | 2 - include/boost/config/compiler/gcc.hpp | 1 + include/boost/config/compiler/metrowerks.hpp | 2 - include/boost/config/compiler/sunpro_cc.hpp | 4 - include/boost/config/compiler/visualc.hpp | 3 - include/boost/config/platform/aix.hpp | 8 -- include/boost/config/platform/amigaos.hpp | 3 - include/boost/config/platform/beos.hpp | 8 -- include/boost/config/platform/bsd.hpp | 25 ++---- include/boost/config/platform/cygwin.hpp | 66 +++++++------- include/boost/config/platform/hpux.hpp | 8 -- include/boost/config/platform/irix.hpp | 6 -- include/boost/config/platform/linux.hpp | 8 -- include/boost/config/platform/macos.hpp | 6 -- include/boost/config/platform/qnxnto.hpp | 8 -- include/boost/config/platform/solaris.hpp | 6 -- include/boost/config/platform/symbian.hpp | 10 +-- include/boost/config/platform/vxworks.hpp | 6 -- include/boost/config/platform/win32.hpp | 1 + include/boost/config/stdlib/libstdcpp3.hpp | 15 ++-- include/boost/config/stdlib/sgi.hpp | 11 +-- include/boost/config/stdlib/stlport.hpp | 11 +-- include/boost/config/stdlib/vacpp.hpp | 11 +-- include/boost/config/suffix.hpp | 4 - test/boost_no_fenv_h.ipp | 78 ---------------- test/no_fenv_h_fail.cpp | 33 ------- test/no_fenv_h_pass.cpp | 33 ------- 31 files changed, 66 insertions(+), 438 deletions(-) delete mode 100644 test/boost_no_fenv_h.ipp delete mode 100644 test/no_fenv_h_fail.cpp delete mode 100644 test/no_fenv_h_pass.cpp diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 1ae8f0f8..7986b6b3 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3481,96 +3481,6 @@ - -

                                        - BOOST_LINUX -

                                        - - -

                                        - <boost/config.hpp> -

                                        - - -

                                        - Defined if the system kernel is Linux -

                                        - - - - -

                                        - BOOST_NIX -

                                        - - -

                                        - <boost/config.hpp> -

                                        - - -

                                        - Defined if the system is POSIX compliant -

                                        - - - - -

                                        - BOOST_GENETIC_NIX -

                                        - - -

                                        - <boost/config.hpp> -

                                        - - -

                                        - Defined if the system can trace its ancestry to the original AT&T - codebase or designs, but is not certified by the Open Group. This - is the case for modern open-source BSD systems. -

                                        - - - - -

                                        - BOOST_TRADEMARK_NIX -

                                        - - -

                                        - <boost/config.hpp> -

                                        - - -

                                        - Systems certified as POSIX compliant by the Open Group. These systems - can use the UNIX trademark. Most commercially developed *nix systems - fall into this category. -

                                        - - - - -

                                        - BOOST_FUNCTIONAL_NIX -

                                        - - -

                                        - <boost/config.hpp> -

                                        - - -

                                        - Systems which behave in a manner roughly consistent with POSIX - standards. Linux and Minix fall into this category. -

                                        - - -

                                        BOOST_DINKUMWARE_STDLIB diff --git a/doc/html/index.html b/doc/html/index.html index 5c2f3211..caec8875 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

                                        -

                                        +

                                        Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                                        @@ -950,7 +950,7 @@
                                        - +

                                        Last revised: November 25, 2010 at 10:30:55 GMT

                                        Last revised: November 23, 2010 at 03:21:20 GMT


                                        diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index eae6572f..eacbf8e7 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -71,11 +71,6 @@ The Platform does not provide `` and ``. [[`BOOST_NO_CWCTYPE`][Platform][ The Platform does not provide `` and ``. ]] -[[`BOOST_NO_FENV_H`][Platform, Standard library][ -The C standard library doesn't provide ``. [@../../../../boost/detail/fenv.hpp -``] should be included instead of `` for maximum -portability on platforms which do provide ``. -]] [[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][ The compiler fails to compile a nested class that has a dependent base class: `` @@ -404,6 +399,11 @@ The platform has the POSIX API `sched_yield`. [[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][ The compiler has native support for SGI style type traits. ]] +[[`BOOST_HAS_FENV_H`][Platform, Standard library][ +The platform has a ``. [@../../../../boost/detail/fenv.hpp +``] should be included instead of `` for maximum +portability. +]] [[`BOOST_HAS_STDINT_H`][Platform][ The platform has a `` ]] @@ -882,26 +882,6 @@ Defined to 1 if the compiler is the Clang compiler. [[`BOOST_WINDOWS`][``][ Defined if the Windows platfrom API is available. ]] -[[`BOOST_LINUX`][``][ -Defined if the system kernel is Linux -]] -[[`BOOST_NIX`][``][ -Defined if the system is POSIX compliant -]] -[[`BOOST_GENETIC_NIX`][``][ -Defined if the system can trace its ancestry to the original AT&T codebase or -designs, but is not certified by the Open Group. This is the case for modern -open-source BSD systems. -]] -[[`BOOST_TRADEMARK_NIX`][``][ -Systems certified as POSIX compliant by the Open Group. These systems can use -the UNIX trademark. Most commercially developed *nix systems fall into this -category. -]] -[[`BOOST_FUNCTIONAL_NIX`][``][ -Systems which behave in a manner roughly consistent with POSIX standards. Linux -and Minix fall into this category. -]] [[`BOOST_DINKUMWARE_STDLIB`][``][ Defined if the dinkumware standard library is in use, takes the same value as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1. diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 2816ab88..a989fd63 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -12,9 +12,6 @@ // // versions check: // we don't support Borland prior to version 5.4: - -#define BOOST_BORLAND __BORLANDC__ - #if __BORLANDC__ < 0x540 # error "Compiler not supported or configured - please reconfigure" #endif diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp index c2cedb17..278222dc 100644 --- a/include/boost/config/compiler/comeau.hpp +++ b/include/boost/config/compiler/comeau.hpp @@ -14,8 +14,6 @@ #include "boost/config/compiler/common_edg.hpp" -#define BOOST_COMO __COMO_VERSION__ - #if (__COMO_VERSION__ <= 4245) # if defined(_MSC_VER) && _MSC_VER <= 1300 diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index 7ce7fe6b..f633647d 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -89,6 +89,7 @@ # define BOOST_NO_EXCEPTIONS #endif + // // Threading support: Turn this on unconditionally here (except for // those platforms where we can know for sure). It will get turned off again diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 81854a0f..21083b7a 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -12,8 +12,6 @@ // Metrowerks C++ compiler setup: -#define BOOST_MWERKS __MWERKS__ - // locale support is disabled when linking with the dynamic runtime # ifdef _MSL_NO_LOCALE # define BOOST_NO_STD_LOCALE diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index e718dbb6..85fa4625 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -11,10 +11,6 @@ // Sun C++ compiler setup: -// Macro identifying the Sun compiler - -#define BOOST_SUNCC __SUNPRO_CC - # if __SUNPRO_CC <= 0x500 # define BOOST_NO_MEMBER_TEMPLATES # define BOOST_NO_FUNCTION_TEMPLATE_ORDERING diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 38789367..15b58b38 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -37,9 +37,6 @@ // #endif -/// Visual Studio has no fenv.h -#define BOOST_NO_FENV_H - #if (_MSC_VER <= 1300) // 1300 == VC++ 7.0 # if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp index ec22a42f..894ef42c 100644 --- a/include/boost/config/platform/aix.hpp +++ b/include/boost/config/platform/aix.hpp @@ -1,5 +1,4 @@ // (C) Copyright John Maddock 2001 - 2002. -// (C) Copyright Bryce Lelbach 2010 // 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,13 +9,6 @@ #define BOOST_PLATFORM "IBM Aix" -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - -#define BOOST_AIX 1 - #define BOOST_HAS_UNISTD_H #define BOOST_HAS_NL_TYPES_H #define BOOST_HAS_NANOSLEEP diff --git a/include/boost/config/platform/amigaos.hpp b/include/boost/config/platform/amigaos.hpp index a1f12f6d..34bcf412 100644 --- a/include/boost/config/platform/amigaos.hpp +++ b/include/boost/config/platform/amigaos.hpp @@ -1,5 +1,4 @@ // (C) Copyright John Maddock 2002. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -8,8 +7,6 @@ #define BOOST_PLATFORM "AmigaOS" -#define BOOST_AMIGA 1 - #define BOOST_DISABLE_THREADS #define BOOST_NO_CWCHAR #define BOOST_NO_STD_WSTRING diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp index cda00164..48c3d8dc 100644 --- a/include/boost/config/platform/beos.hpp +++ b/include/boost/config/platform/beos.hpp @@ -1,5 +1,4 @@ // (C) Copyright John Maddock 2001. -// (C) Copyright Bryce Lelbach 2010 // 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,13 +9,6 @@ #define BOOST_PLATFORM "BeOS" -#define BOOST_BEOS 1 - -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -//#define BOOST_TRADEMARK_NIX 1 -#define BOOST_FUNCTIONAL_NIX 1 - #define BOOST_NO_CWCHAR #define BOOST_NO_CWCTYPE #define BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp index 9720c777..a0142978 100644 --- a/include/boost/config/platform/bsd.hpp +++ b/include/boost/config/platform/bsd.hpp @@ -1,7 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001. // (C) Copyright Douglas Gregor 2002. -// (C) Copyright Bryce Lelbach 2010 // 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,30 +9,18 @@ // generic BSD config options: -#if !defined(__FreeBSD__) && \ - !defined(__NetBSD__) && \ - !defined(__OpenBSD__) && \ - !defined(__DragonFly__) - #error "This platform is not BSD" +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__) +#error "This platform is not BSD" #endif -#define BOOST_NIX 1 -#define BOOST_GENETIC_NIX 1 -//#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - #ifdef __FreeBSD__ - #define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) - #define BOOST_FREEBSD __FreeBSD__ +#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__) #elif defined(__NetBSD__) - #define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) - #define BOOST_NETBSD __NetBSD__ +#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__) #elif defined(__OpenBSD__) - #define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) - #define BOOST_OPENBSD __OpenBSD__ +#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__) #elif defined(__DragonFly__) - #define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) - #define BOOST_DFBSD __DragonFly__ +#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__) #endif // diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index aba37193..8e1bcb01 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -1,56 +1,52 @@ -// (C) Copyright John Maddock 2001 - 2003 -// (C) Copyright Bryce Lelbach 2010 -// -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -// See http://www.boost.org for most recent version. +// (C) Copyright John Maddock 2001 - 2003. +// 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) -#define BOOST_PLATFORM "Cygwin" // Platform name. -#define BOOST_CYGWIN __CYGWIN__ // Boost platform ID macros. +// See http://www.boost.org for most recent version. +// cygwin specific config options: + +#define BOOST_PLATFORM "Cygwin" #define BOOST_HAS_DIRENT_H #define BOOST_HAS_LOG1P #define BOOST_HAS_EXPM1 -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -//#define BOOST_TRADEMARK_NIX 1 -#define BOOST_FUNCTIONAL_NIX 1 - -// See if we have POSIX threads, otherwise revert to native Win threads. +// +// Threading API: +// See if we have POSIX threads, if we do use them, otherwise +// revert to native Win threads. #define BOOST_HAS_UNISTD_H #include - -#if defined(_POSIX_THREADS) && (_POSIX_THREADS + 0 >= 0) && \ - !defined(BOOST_HAS_WINTHREADS) - #define BOOST_HAS_PTHREADS - #define BOOST_HAS_SCHED_YIELD - #define BOOST_HAS_GETTIMEOFDAY - #define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE - #define BOOST_HAS_SIGACTION +#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) +# define BOOST_HAS_PTHREADS +# define BOOST_HAS_SCHED_YIELD +# define BOOST_HAS_GETTIMEOFDAY +# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +# define BOOST_HAS_SIGACTION #else - #if !defined(BOOST_HAS_WINTHREADS) - #define BOOST_HAS_WINTHREADS - #endif - #define BOOST_HAS_FTIME +# if !defined(BOOST_HAS_WINTHREADS) +# define BOOST_HAS_WINTHREADS +# endif +# define BOOST_HAS_FTIME #endif -// Find out if we have a stdint.h, there should be a better way to do this. +// +// find out if we have a stdint.h, there should be a better way to do this: +// #include - #ifdef _STDINT_H - #define BOOST_HAS_STDINT_H +#define BOOST_HAS_STDINT_H #endif -/// Cygwin has no fenv.h -#define BOOST_NO_FENV_H - +// boilerplate code: #include -// Cygwin lies about XSI conformance, there is no nl_types.h. +// +// Cygwin lies about XSI conformance, there is no nl_types.h: +// #ifdef BOOST_HAS_NL_TYPES_H - #undef BOOST_HAS_NL_TYPES_H +# undef BOOST_HAS_NL_TYPES_H #endif diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp index 2aefb2d2..19ce68e5 100644 --- a/include/boost/config/platform/hpux.hpp +++ b/include/boost/config/platform/hpux.hpp @@ -3,7 +3,6 @@ // (C) Copyright David Abrahams 2002. // (C) Copyright Toon Knapen 2003. // (C) Copyright Boris Gubenko 2006 - 2007. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -14,13 +13,6 @@ #define BOOST_PLATFORM "HP-UX" -#define BOOST_HPUX 1 // platform ID macro - -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - // In principle, HP-UX has a nice under the name // However, it has the following problem: // Use of UINT32_C(0) results in "0u l" for the preprocessed source diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp index 4915d813..aeae49c8 100644 --- a/include/boost/config/platform/irix.hpp +++ b/include/boost/config/platform/irix.hpp @@ -1,6 +1,5 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -12,11 +11,6 @@ #define BOOST_PLATFORM "SGI Irix" -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - #define BOOST_NO_SWPRINTF // // these are not auto detected by POSIX feature tests: diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 3e7f02c7..51ae1334 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -1,6 +1,5 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -14,13 +13,6 @@ // make sure we have __GLIBC_PREREQ if available at all #include -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -//#define BOOST_TRADEMARK_NIX 1 -#define BOOST_FUNCTIONAL_NIX 1 - -#define BOOST_LINUX 1 - // // added to glibc 2.1.1 // We can only test for 2.1 though: diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp index d018703d..2780ef99 100644 --- a/include/boost/config/platform/macos.hpp +++ b/include/boost/config/platform/macos.hpp @@ -1,7 +1,6 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Darin Adler 2001 - 2002. // (C) Copyright Bill Kempf 2002. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -14,11 +13,6 @@ #if __MACH__ && !defined(_MSL_USING_MSL_C) -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - // Using the Mac OS X system BSD-style C library. # ifndef BOOST_HAS_UNISTD_H diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp index 0c54373d..b1377c8d 100644 --- a/include/boost/config/platform/qnxnto.hpp +++ b/include/boost/config/platform/qnxnto.hpp @@ -1,5 +1,4 @@ // (C) Copyright Jim Douglas 2005. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -8,15 +7,8 @@ // QNX specific config options: -#define BOOST_QNX 1 - #define BOOST_PLATFORM "QNX" -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -//#define BOOST_TRADEMARK_NIX 1 -#define BOOST_FUNCTIONAL_NIX 1 - #define BOOST_HAS_UNISTD_H #include diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp index 9a9e1f46..9f925666 100644 --- a/include/boost/config/platform/solaris.hpp +++ b/include/boost/config/platform/solaris.hpp @@ -1,6 +1,5 @@ // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2003. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -11,11 +10,6 @@ #define BOOST_PLATFORM "Sun Solaris" -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - #define BOOST_HAS_GETTIMEOFDAY // boilerplate code: diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp index 798dfac4..ad379431 100644 --- a/include/boost/config/platform/symbian.hpp +++ b/include/boost/config/platform/symbian.hpp @@ -1,7 +1,6 @@ // (C) Copyright Yuriy Krasnoschek 2009. // (C) Copyright John Maddock 2001 - 2003. // (C) Copyright Jens Maurer 2001 - 2003. -// (C) Copyright Bryce Lelbach 2010 // 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,16 +9,13 @@ // symbian specific config options: + #define BOOST_PLATFORM "Symbian" #define BOOST_SYMBIAN 1 + #if defined(__S60_3X__) -// Open C / C++ plugin was introdused in this SDK, earlier versions don't have -// CRT / STL -# define BOOST_NIX 1 -//# define BOOST_GENETIC_NIX 1 -//# define BOOST_TRADEMARK_NIX 1 -# define BOOST_FUNCTIONAL_NIX 1 +// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL # define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK // make sure we have __GLIBC_PREREQ if available at all # include diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp index 3b128bf4..6ec5171e 100644 --- a/include/boost/config/platform/vxworks.hpp +++ b/include/boost/config/platform/vxworks.hpp @@ -1,5 +1,4 @@ // (C) Copyright Dustin Spicuzza 2009. -// (C) Copyright Bryce Lelbach 2010 // 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) @@ -24,11 +23,6 @@ #define _POSIX_TIMERS 1 #define _POSIX_THREADS 1 -#define BOOST_NIX 1 -//#define BOOST_GENETIC_NIX 1 -#define BOOST_TRADEMARK_NIX 1 -//#define BOOST_FUNCTIONAL_NIX 1 - // vxworks doesn't work with asio serial ports #define BOOST_ASIO_DISABLE_SERIAL_PORT diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index 72c3dceb..690f464a 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -31,6 +31,7 @@ # define BOOST_SYMBOL_IMPORT __declspec(dllimport) #endif + #if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0))) # define BOOST_HAS_STDINT_H # define __STDC_LIMIT_MACROS diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index c048b896..f99d7d35 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -56,6 +56,11 @@ # define BOOST_HAS_THREADS #endif +#if !defined(CYGWIN) +# include +# define BOOST_HAS_FENV_H +#endif + #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ && defined(BOOST_HAS_LONG_LONG) @@ -64,16 +69,6 @@ # undef BOOST_HAS_LONG_LONG #endif -// Apple doesn't seem to reliably defined a *unix* macro -#if !defined(CYGWIN) && ( defined(__unix__) \ - || defined(__unix) \ - || defined(unix) \ - || defined(__APPLE__) \ - || defined(__APPLE) \ - || defined(APPLE)) -# include -#endif - #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 5731fe5e..088e0471 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,14 +40,11 @@ # define BOOST_NO_STRINGSTREAM #endif -// Apple doesn't seem to reliably defined a *unix* macro -#if !defined(CYGWIN) && ( defined(__unix__) \ - || defined(__unix) \ - || defined(unix) \ - || defined(__APPLE__) \ - || defined(__APPLE) \ - || defined(APPLE)) +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) # include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif #endif diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 85176a4d..098da44e 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,14 +16,11 @@ # endif #endif -// Apple doesn't seem to reliably defined a *unix* macro -#if !defined(CYGWIN) && ( defined(__unix__) \ - || defined(__unix) \ - || defined(unix) \ - || defined(__APPLE__) \ - || defined(__APPLE) \ - || defined(APPLE)) +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) # include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif #endif // diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 3fcf6e05..904e0681 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,14 +12,11 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES -// Apple doesn't seem to reliably defined a *unix* macro -#if !defined(CYGWIN) && ( defined(__unix__) \ - || defined(__unix) \ - || defined(unix) \ - || defined(__APPLE__) \ - || defined(__APPLE) \ - || defined(APPLE)) +#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) # include +# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) +# define BOOST_HAS_FENV_H +# endif #endif // C++0x headers not yet implemented diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 4e608d24..31859144 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -639,10 +639,6 @@ namespace std{ using ::typeinfo; } # if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \ || defined(_POSIX_SOURCE) # define BOOST_PLATFORM "Generic Unix" -# define BOOST_NIX 1 -//# define BOOST_GENETIC_NIX 1 -//# define BOOST_TRADEMARK_NIX 1 -# define BOOST_FUNCTIONAL_NIX 1 # else # define BOOST_PLATFORM "Unknown" # endif diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp deleted file mode 100644 index 97ed5124..00000000 --- a/test/boost_no_fenv_h.ipp +++ /dev/null @@ -1,78 +0,0 @@ -// (C) Copyright John Maddock 2001. -// (C) Copyright Bryce Lelbach 2010. -// 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_FENV_H -// TITLE: fenv.h -// DESCRIPTION: There is no POSIX available. If is -// available, should be included -// instead of directly including . - -#include - -namespace boost_no_fenv_h { - -int test() -{ - /// POSIX required typedefs - typedef ::fenv_t has_fenv_t; - typedef ::fexcept_t has_fexcept_t; - - /// POSIX required macros - #if !defined(FE_DIVBYZERO) - #error platform does not define FE_DIVBYZERO - #endif - - #if !defined(FE_INEXACT) - #error platform does not define FE_INEXACT - #endif - - #if !defined(FE_INVALID) - #error platform does not define FE_INVALID - #endif - - #if !defined(FE_OVERFLOW) - #error platform does not define FE_OVERFLOW - #endif - - #if !defined(FE_UNDERFLOW) - #error platform does not define FE_UNDERFLOW - #endif - - #if !defined(FE_DOWNWARD) - #error platform does not define FE_DOWNWARD - #endif - - #if !defined(FE_TONEAREST) - #error platform does not define FE_TONEAREST - #endif - - #if !defined(FE_UPWARD) - #error platform does not define FE_UPWARD - #endif - - #if !defined(FE_DFL_ENV) - #error platform does not define FE_DFL_ENV - #endif - - int (*has_feclearexcept)(int) = ::feclearexcept; - int (*has_fegetenv)(fenv_t*) = ::fegetenv; - int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept; - int (*has_fegetround)(void) = ::fegetround; - int (*has_feholdexcept)(fenv_t*) = ::feholdexcept; - int (*has_feraiseexcept)(int) = ::feraiseexcept; - int (*has_fesetenv)(const fenv_t*) = ::fesetenv; - int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag; - int (*has_fesetround)(int) = ::fesetround; - int (*has_fetestexcept)(int) = ::fetestexcept; - int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv; - - return 0; -} - -} - diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp deleted file mode 100644 index 9b2f4103..00000000 --- a/test/no_fenv_h_fail.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright Bryce Lelbach 2010. -// 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. - -// Test file for macro BOOST_NO_FENV_H -// This file should not compile, if it does then -// BOOST_NO_FENV_H should not be defined. -// See file boost_no_fenv_h.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_FENV_H -#include "boost_no_fenv_h.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_fenv_h::test(); -} - diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp deleted file mode 100644 index 573d6244..00000000 --- a/test/no_fenv_h_pass.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright Bryce Lelbach 2010. -// 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. - -// Test file for macro BOOST_NO_FENV_H -// This file should compile, if it does not then -// BOOST_NO_FENV_H should be defined. -// See file boost_no_fenv_h.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_FENV_H -#include "boost_no_fenv_h.ipp" -#else -namespace boost_no_fenv_h = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_fenv_h::test(); -} - From e391ef7ce0fad1b0fb33359e3e1f3dc57334088f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 19 Jan 2011 13:20:45 +0000 Subject: [PATCH 242/435] Patch IBM compiler support to latest version. Fixes #5091. [SVN r68286] --- include/boost/config/compiler/vacpp.hpp | 47 ++++++++++++++++++------- 1 file changed, 34 insertions(+), 13 deletions(-) diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 5ae9c285..7ad616e4 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -27,7 +27,6 @@ #if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG) # define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -# define BOOST_NO_INITIALIZER_LISTS #endif #if (__IBMCPP__ <= 1110) @@ -54,44 +53,66 @@ #error "Compiler not supported or configured - please reconfigure" #endif // -// last known and checked version is 600: -#if (__IBMCPP__ > 1010) +// last known and checked version is 1110: +#if (__IBMCPP__ > 1110) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # endif #endif // Some versions of the compiler have issues with default arguments on partial specializations +#if __IBMCPP__ <= 1010 #define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#endif // // C++0x features // // See boost\config\suffix.hpp for BOOST_NO_LONG_LONG // -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CHAR16_T -#define BOOST_NO_CHAR32_T +#if ! __IBMCPP_AUTO_TYPEDEDUCTION +# define BOOST_NO_AUTO_DECLARATIONS +# define BOOST_NO_AUTO_MULTIDECLARATIONS +#endif +#if ! __IBMCPP_UTF_LITERAL__ +# define BOOST_NO_CHAR16_T +# define BOOST_NO_CHAR32_T +#endif #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE +#if ! __IBMCPP_DECLTYPE +# define BOOST_NO_DECLTYPE +#else +# define BOOST_HAS_DECLTYPE +#endif #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#if ! __IBMCPP_EXTERN_TEMPLATE +# define BOOST_NO_EXTERN_TEMPLATE +#endif +#if ! __IBMCPP_VARIADIC_TEMPLATES +// not enabled separately at this time +# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif +#define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS #define BOOST_NO_RVALUE_REFERENCES #define BOOST_NO_SCOPED_ENUMS #define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_STATIC_ASSERT +#if ! __IBMCPP_STATIC_ASSERT +# define BOOST_NO_STATIC_ASSERT +#endif #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS +#if ! __IBMCPP_VARIADIC_TEMPLATES +# define BOOST_NO_VARIADIC_TEMPLATES +#endif +#if ! __C99_MACRO_WITH_VA_ARGS +# define BOOST_NO_VARIADIC_MACROS +#endif From a7148f1932bb55e0d3d6951ab68ee191b90f2695 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 23 Jan 2011 10:18:44 +0000 Subject: [PATCH 243/435] Restrict new pathscale config to 4.x versions. [SVN r68376] --- include/boost/config/select_compiler_config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index 321743d7..fddca5cf 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -52,7 +52,7 @@ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" -#elif defined __PATHSCALE__ +#elif defined(__PATHSCALE__) && (__PATHSCALE__ >= 4) // PathScale EKOPath compiler (has to come before clang and gcc) # define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp" From 804e7170e1607cf9a9a063a2f12af8711f4f515b Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 24 Jan 2011 18:06:12 +0000 Subject: [PATCH 244/435] Oops... use the correct pathscale version macro. [SVN r68418] --- include/boost/config/select_compiler_config.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/select_compiler_config.hpp b/include/boost/config/select_compiler_config.hpp index fddca5cf..e19469ae 100644 --- a/include/boost/config/select_compiler_config.hpp +++ b/include/boost/config/select_compiler_config.hpp @@ -52,7 +52,7 @@ // Comeau C++ # define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp" -#elif defined(__PATHSCALE__) && (__PATHSCALE__ >= 4) +#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4) // PathScale EKOPath compiler (has to come before clang and gcc) # define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp" From 952b57fa7df513af5d627b01d733591835af83fc Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 24 Jan 2011 18:28:53 +0000 Subject: [PATCH 245/435] Add preliminary C++0x support. Refs #5112. [SVN r68420] --- include/boost/config/compiler/intel.hpp | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index e7bc95ba..854036d3 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -26,7 +26,22 @@ # define BOOST_INTEL_CXX_VERSION __ECC #endif +// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x' +#if (BOOST_INTEL_CXX_VERSION >= 1200) +# if defined(BOOST_INTEL_LINUX) && defined(__STDC_HOSTED__) +# define BOOST_INTEL_STDCXX0X +# endif +#elif (BOOST_INTEL_CXX_VERSION >= 1100) +# if defined(__GXX_EXPERIMENTAL_CPP0X__) +# define BOOST_INTEL_STDCXX0X +# endif +#endif + +#ifdef BOOST_INTEL_STDCXX0X +#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) +#else #define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) +#endif #define BOOST_INTEL BOOST_INTEL_CXX_VERSION #if defined(_WIN32) || defined(_WIN64) @@ -179,6 +194,23 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_SYMBOL_IMPORT # define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default"))) #endif +// +// C++0x features +// - ICC added static_assert in 11.0 (first version with C++0x support) +// +#if defined(BOOST_INTEL_STDCXX0X) +# undef BOOST_NO_STATIC_ASSERT +# define BOOST_HAS_STATIC_ASSERT +#endif +// +// - decltype and && did not work properly before version 12.0 +// +#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200) +# undef BOOST_NO_DECLTYPE +# undef BOOST_NO_RVALUE_REFERENCES +# define BOOST_HAS_DECLTYPE +# define BOOST_HAS_RVALUE_REFS +#endif // // last known and checked version: From 69e53779570808a3ce8fded80ca07bed42122e0f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 27 Jan 2011 11:47:11 +0000 Subject: [PATCH 246/435] Fix up Intel C++0x features. Fixes #5112. [SVN r68472] --- include/boost/config/compiler/intel.hpp | 38 ++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 854036d3..f209ae77 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -27,14 +27,11 @@ #endif // Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x' -#if (BOOST_INTEL_CXX_VERSION >= 1200) -# if defined(BOOST_INTEL_LINUX) && defined(__STDC_HOSTED__) -# define BOOST_INTEL_STDCXX0X -# endif -#elif (BOOST_INTEL_CXX_VERSION >= 1100) -# if defined(__GXX_EXPERIMENTAL_CPP0X__) -# define BOOST_INTEL_STDCXX0X -# endif +#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && __STDC_HOSTED__) || defined(__GXX_EXPERIMENTAL_CPP0X__) +# define BOOST_INTEL_STDCXX0X +#endif +#if defined(_MSC_VER) && (_MSC_VER >= 1600) +# define BOOST_INTEL_STDCXX0X #endif #ifdef BOOST_INTEL_STDCXX0X @@ -114,7 +111,7 @@ # define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL # endif #endif -#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110) +#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200) // GCC or VC emulation: #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif @@ -200,16 +197,25 @@ template<> struct assert_intrinsic_wchar_t {}; // #if defined(BOOST_INTEL_STDCXX0X) # undef BOOST_NO_STATIC_ASSERT -# define BOOST_HAS_STATIC_ASSERT +// +// These pass our test cases, but aren't officially supported according to: +// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/ +// +//# undef BOOST_NO_LAMBDAS +//# undef BOOST_NO_DECLTYPE +//# undef BOOST_NO_AUTO_DECLARATIONS +//# undef BOOST_NO_AUTO_MULTIDECLARATIONS #endif -// -// - decltype and && did not work properly before version 12.0 -// + #if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200) -# undef BOOST_NO_DECLTYPE # undef BOOST_NO_RVALUE_REFERENCES -# define BOOST_HAS_DECLTYPE -# define BOOST_HAS_RVALUE_REFS +# undef BOOST_NO_SCOPED_ENUMS +# undef BOOST_NO_DELETED_FUNCTIONS +# undef BOOST_NO_DEFAULTED_FUNCTIONS +# undef BOOST_NO_LAMBDAS +# undef BOOST_NO_DECLTYPE +# undef BOOST_NO_AUTO_DECLARATIONS +# undef BOOST_NO_AUTO_MULTIDECLARATIONS #endif // From ed7120adb8515a95ab7f5b75c73eeec758f86c07 Mon Sep 17 00:00:00 2001 From: Steven Watanabe Date: Sun, 30 Jan 2011 06:24:30 +0000 Subject: [PATCH 247/435] Restore [66804], [66833], and [66834]. (fenv fixes.) I mistakenly reverted them in [68201] because [66804] was mislabeled. [SVN r68554] --- doc/macro_reference.qbk | 10 +-- include/boost/config/compiler/visualc.hpp | 3 + include/boost/config/platform/cygwin.hpp | 3 + include/boost/config/platform/win32.hpp | 1 - include/boost/config/stdlib/libstdcpp3.hpp | 15 +++-- include/boost/config/stdlib/sgi.hpp | 11 +-- include/boost/config/stdlib/stlport.hpp | 11 +-- include/boost/config/stdlib/vacpp.hpp | 11 +-- test/boost_no_fenv_h.ipp | 78 ++++++++++++++++++++++ test/no_fenv_h_fail.cpp | 33 +++++++++ test/no_fenv_h_pass.cpp | 33 +++++++++ 11 files changed, 186 insertions(+), 23 deletions(-) create mode 100644 test/boost_no_fenv_h.ipp create mode 100644 test/no_fenv_h_fail.cpp create mode 100644 test/no_fenv_h_pass.cpp diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index eacbf8e7..7f84ef44 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -71,6 +71,11 @@ The Platform does not provide `` and ``. [[`BOOST_NO_CWCTYPE`][Platform][ The Platform does not provide `` and ``. ]] +[[`BOOST_NO_FENV_H`][Platform, Standard library][ +The C standard library doesn't provide ``. [@../../../../boost/detail/fenv.hpp +``] should be included instead of `` for maximum +portability on platforms which do provide ``. +]] [[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][ The compiler fails to compile a nested class that has a dependent base class: `` @@ -399,11 +404,6 @@ The platform has the POSIX API `sched_yield`. [[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][ The compiler has native support for SGI style type traits. ]] -[[`BOOST_HAS_FENV_H`][Platform, Standard library][ -The platform has a ``. [@../../../../boost/detail/fenv.hpp -``] should be included instead of `` for maximum -portability. -]] [[`BOOST_HAS_STDINT_H`][Platform][ The platform has a `` ]] diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 15b58b38..38789367 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -37,6 +37,9 @@ // #endif +/// Visual Studio has no fenv.h +#define BOOST_NO_FENV_H + #if (_MSC_VER <= 1300) // 1300 == VC++ 7.0 # if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index 8e1bcb01..b7ef572f 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -39,6 +39,9 @@ #define BOOST_HAS_STDINT_H #endif +/// Cygwin has no fenv.h +#define BOOST_NO_FENV_H + // boilerplate code: #include diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp index 690f464a..72c3dceb 100644 --- a/include/boost/config/platform/win32.hpp +++ b/include/boost/config/platform/win32.hpp @@ -31,7 +31,6 @@ # define BOOST_SYMBOL_IMPORT __declspec(dllimport) #endif - #if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0))) # define BOOST_HAS_STDINT_H # define __STDC_LIMIT_MACROS diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index f99d7d35..c048b896 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -56,11 +56,6 @@ # define BOOST_HAS_THREADS #endif -#if !defined(CYGWIN) -# include -# define BOOST_HAS_FENV_H -#endif - #if !defined(_GLIBCPP_USE_LONG_LONG) \ && !defined(_GLIBCXX_USE_LONG_LONG)\ && defined(BOOST_HAS_LONG_LONG) @@ -69,6 +64,16 @@ # undef BOOST_HAS_LONG_LONG #endif +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) +# include +#endif + #if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0 # define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx # define BOOST_HAS_SLIST diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 088e0471..5731fe5e 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -40,11 +40,14 @@ # define BOOST_NO_STRINGSTREAM #endif -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 098da44e..85176a4d 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -16,11 +16,14 @@ # endif #endif -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif // diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 904e0681..3fcf6e05 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -12,11 +12,14 @@ #define BOOST_HAS_MACRO_USE_FACET #define BOOST_NO_STD_MESSAGES -#if !defined(CYGWIN) && (defined(unix) || defined(__unix) || defined(__unix__)) +// Apple doesn't seem to reliably defined a *unix* macro +#if !defined(CYGWIN) && ( defined(__unix__) \ + || defined(__unix) \ + || defined(unix) \ + || defined(__APPLE__) \ + || defined(__APPLE) \ + || defined(APPLE)) # include -# if defined(_POSIX_VERSION) || defined(_XOPEN_VERSION) -# define BOOST_HAS_FENV_H -# endif #endif // C++0x headers not yet implemented diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp new file mode 100644 index 00000000..97ed5124 --- /dev/null +++ b/test/boost_no_fenv_h.ipp @@ -0,0 +1,78 @@ +// (C) Copyright John Maddock 2001. +// (C) Copyright Bryce Lelbach 2010. +// 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_FENV_H +// TITLE: fenv.h +// DESCRIPTION: There is no POSIX available. If is +// available, should be included +// instead of directly including . + +#include + +namespace boost_no_fenv_h { + +int test() +{ + /// POSIX required typedefs + typedef ::fenv_t has_fenv_t; + typedef ::fexcept_t has_fexcept_t; + + /// POSIX required macros + #if !defined(FE_DIVBYZERO) + #error platform does not define FE_DIVBYZERO + #endif + + #if !defined(FE_INEXACT) + #error platform does not define FE_INEXACT + #endif + + #if !defined(FE_INVALID) + #error platform does not define FE_INVALID + #endif + + #if !defined(FE_OVERFLOW) + #error platform does not define FE_OVERFLOW + #endif + + #if !defined(FE_UNDERFLOW) + #error platform does not define FE_UNDERFLOW + #endif + + #if !defined(FE_DOWNWARD) + #error platform does not define FE_DOWNWARD + #endif + + #if !defined(FE_TONEAREST) + #error platform does not define FE_TONEAREST + #endif + + #if !defined(FE_UPWARD) + #error platform does not define FE_UPWARD + #endif + + #if !defined(FE_DFL_ENV) + #error platform does not define FE_DFL_ENV + #endif + + int (*has_feclearexcept)(int) = ::feclearexcept; + int (*has_fegetenv)(fenv_t*) = ::fegetenv; + int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept; + int (*has_fegetround)(void) = ::fegetround; + int (*has_feholdexcept)(fenv_t*) = ::feholdexcept; + int (*has_feraiseexcept)(int) = ::feraiseexcept; + int (*has_fesetenv)(const fenv_t*) = ::fesetenv; + int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag; + int (*has_fesetround)(int) = ::fesetround; + int (*has_fetestexcept)(int) = ::fetestexcept; + int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv; + + return 0; +} + +} + diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp new file mode 100644 index 00000000..9b2f4103 --- /dev/null +++ b/test/no_fenv_h_fail.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// 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. + +// Test file for macro BOOST_NO_FENV_H +// This file should not compile, if it does then +// BOOST_NO_FENV_H should not be defined. +// See file boost_no_fenv_h.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_FENV_H +#include "boost_no_fenv_h.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp new file mode 100644 index 00000000..573d6244 --- /dev/null +++ b/test/no_fenv_h_pass.cpp @@ -0,0 +1,33 @@ +// Copyright Bryce Lelbach 2010. +// 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. + +// Test file for macro BOOST_NO_FENV_H +// This file should compile, if it does not then +// BOOST_NO_FENV_H should be defined. +// See file boost_no_fenv_h.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_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_fenv_h::test(); +} + From 2ea9ef484168ab7530cead1049ebd0ba7c16919d Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sun, 30 Jan 2011 12:47:47 +0000 Subject: [PATCH 248/435] Change nvcc config to use underlying compiler config. Fixes #4431. [SVN r68566] --- include/boost/config/compiler/nvcc.hpp | 75 +++----------------------- 1 file changed, 8 insertions(+), 67 deletions(-) diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp index eaecf374..03203fb5 100644 --- a/include/boost/config/compiler/nvcc.hpp +++ b/include/boost/config/compiler/nvcc.hpp @@ -17,71 +17,12 @@ // Boost support macro for NVCC // NVCC Basically behaves like some flavor of MSVC6 + some specific quirks -#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION -#define BOOST_MSVC6_MEMBER_TEMPLATES -#define BOOST_HAS_UNISTD_H -#define BOOST_HAS_STDINT_H -#define BOOST_HAS_SIGACTION -#define BOOST_HAS_SCHED_YIELD -#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_HAS_LONG_LONG -#define BOOST_HAS_LOG1P -#define BOOST_HAS_GETTIMEOFDAY -#define BOOST_HAS_EXPM1 -#define BOOST_HAS_DIRENT_H -#define BOOST_HAS_CLOCK_GETTIME -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS -#define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_TEMPLATE_ALIASES -#define BOOST_NO_STD_UNORDERED -#define BOOST_NO_STATIC_ASSERT -#define BOOST_NO_SFINAE_EXPR -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_RAW_LITERALS -#define BOOST_NO_NULLPTR -#define BOOST_NO_LAMBDAS -#define BOOST_NO_INITIALIZER_LISTS -#define BOOST_NO_MS_INT64_NUMERIC_LIMITS -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -#define BOOST_NO_EXTERN_TEMPLATE -#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_DELETED_FUNCTIONS -#define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DECLTYPE -#define BOOST_NO_CONSTEXPR -#define BOOST_NO_CONCEPTS -#define BOOST_NO_CHAR32_T -#define BOOST_NO_CHAR16_T -#define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_AUTO_DECLARATIONS -#define BOOST_NO_0X_HDR_UNORDERED_SET -#define BOOST_NO_0X_HDR_UNORDERED_MAP -#define BOOST_NO_0X_HDR_TYPE_TRAITS -#define BOOST_NO_0X_HDR_TUPLE -#define BOOST_NO_0X_HDR_THREAD -#define BOOST_NO_0X_HDR_TYPEINDEX -#define BOOST_NO_0X_HDR_SYSTEM_ERROR -#define BOOST_NO_0X_HDR_REGEX -#define BOOST_NO_0X_HDR_RATIO -#define BOOST_NO_0X_HDR_RANDOM -#define BOOST_NO_0X_HDR_MUTEX -#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS -#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -#define BOOST_NO_0X_HDR_INITIALIZER_LIST -#define BOOST_NO_0X_HDR_FUTURE -#define BOOST_NO_0X_HDR_FORWARD_LIST -#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -#define BOOST_NO_0X_HDR_CONDITION_VARIABLE -#define BOOST_NO_0X_HDR_CONCEPTS -#define BOOST_NO_0X_HDR_CODECVT -#define BOOST_NO_0X_HDR_CHRONO -#define BOOST_NO_0X_HDR_ARRAY +#ifdef __GNUC__ +#include + +#elif defined(_MSC_VER) + +#include + +#endif From 66b9affdd877df9d2de530d4d0d4c2f134190006 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Sat, 5 Feb 2011 20:39:52 +0000 Subject: [PATCH 249/435] Update Clang configuration to reflect improved C++0x support in Clang. [SVN r68659] --- include/boost/config/compiler/clang.hpp | 53 +++++++++++++++++-------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 2ce67732..08930337 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -13,8 +13,7 @@ # define BOOST_NO_EXCEPTIONS #endif -#if __has_feature(cxx_rtti) -#else +#if !__has_feature(cxx_rtti) # define BOOST_NO_RTTI #endif @@ -24,35 +23,57 @@ #define BOOST_HAS_NRVO -// NOTE: Clang's C++0x support is not worth detecting. However, it -// supports both extern templates and "long long" even in C++98/03 -// mode. +// Clang supports "long long" in all compilation modes. + #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T #define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR -#define BOOST_NO_DECLTYPE + +#if !__has_feature(cxx_decltype) +# define BOOST_NO_DECLTYPE +#endif + #define BOOST_NO_DEFAULTED_FUNCTIONS -#define BOOST_NO_DELETED_FUNCTIONS + +#if !__has_feature(cxx_deleted_functions) +# define BOOST_NO_DELETED_FUNCTIONS +#endif + #define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS -#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS + +#if !__has_feature(cxx_default_function_template_args) + #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +#endif + #define BOOST_NO_INITIALIZER_LISTS #define BOOST_NO_LAMBDAS #define BOOST_NO_NULLPTR #define BOOST_NO_RAW_LITERALS -#define BOOST_NO_RVALUE_REFERENCES -#define BOOST_NO_SCOPED_ENUMS -#define BOOST_NO_STATIC_ASSERT + +#if !__has_feature(cxx_rvalue_references) +# define BOOST_NO_RVALUE_REFERENCES +#endif + +#if !__has_feature(cxx_strong_enums) +# define BOOST_NO_SCOPED_ENUMS +#endif + +#if !__has_feature(cxx_static_assert) +# define BOOST_NO_STATIC_ASSERT +#endif + #define BOOST_NO_TEMPLATE_ALIASES #define BOOST_NO_UNICODE_LITERALS -#define BOOST_NO_VARIADIC_TEMPLATES -#define BOOST_NO_VARIADIC_MACROS -// HACK: Clang does support extern templates, but Boost's test for -// them is wrong. -#define BOOST_NO_EXTERN_TEMPLATE +#if !__has_feature(cxx_variadic_templates) +# define BOOST_NO_VARIADIC_TEMPLATES +#endif + +// Clang always supports variadic macros +// Clang always supports extern templates #ifndef BOOST_COMPILER # define BOOST_COMPILER "Clang version " __clang_version__ From 0b1c0b33b360edeadb4f1b576790cc1ad4faf56b Mon Sep 17 00:00:00 2001 From: Christopher Jefferson Date: Fri, 11 Feb 2011 20:37:03 +0000 Subject: [PATCH 250/435] Add basic support for the libc++ standard library [SVN r68785] --- include/boost/config/select_stdlib_config.hpp | 4 ++++ include/boost/config/stdlib/libcpp.hpp | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 include/boost/config/stdlib/libcpp.hpp diff --git a/include/boost/config/select_stdlib_config.hpp b/include/boost/config/select_stdlib_config.hpp index 2a1430ae..f0204823 100644 --- a/include/boost/config/select_stdlib_config.hpp +++ b/include/boost/config/select_stdlib_config.hpp @@ -40,6 +40,10 @@ // Rogue Wave library: # define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp" +#elif defined(_LIBCPP_VERSION) +// libc++ +# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp" + #elif defined(__GLIBCPP__) || defined(__GLIBCXX__) // GNU libstdc++ 3 # define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp" diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp new file mode 100644 index 00000000..8e72cb9f --- /dev/null +++ b/include/boost/config/stdlib/libcpp.hpp @@ -0,0 +1,22 @@ +// (C) Copyright Christopher Jefferson 2011. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See http://www.boost.org for most recent version. + +// config for libc++ +// Might need more in here later. + +#if !defined(_LIBCPP_VERSION) +# include +# if !defined(_LIBCPP_VERSION) +# error "This is not libc++!" +# endif +#endif + +#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION) + +#define BOOST_HAS_THREADS + +// --- end --- From 8445752e75bee76c8270a509a7562aa92be65461 Mon Sep 17 00:00:00 2001 From: Christopher Jefferson Date: Sat, 12 Feb 2011 23:05:03 +0000 Subject: [PATCH 251/435] Improve the libc++ configuration [SVN r68819] --- include/boost/config/stdlib/libcpp.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 8e72cb9f..37f43b6e 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -19,4 +19,13 @@ #define BOOST_HAS_THREADS +#define BOOST_NO_0X_HDR_CONCEPTS +#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS + +#ifdef _LIBCPP_HAS_NO_VARIADICS +# define BOOST_NO_0X_HDR_TUPLE +#endif + // --- end --- From eeb7991cba8853ca20d3c9a0f888bf83560c722f Mon Sep 17 00:00:00 2001 From: Christopher Jefferson Date: Mon, 14 Feb 2011 10:29:12 +0000 Subject: [PATCH 252/435] libc++ has non-standard message_base [SVN r68860] --- include/boost/config/stdlib/libcpp.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 37f43b6e..db7f6f15 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -28,4 +28,7 @@ # define BOOST_NO_0X_HDR_TUPLE #endif +// libc++ uses a non-standard messages_base +#define BOOST_NO_STD_MESSAGES + // --- end --- From cdfbdb2a72819bbc876062c2887c67df858ad732 Mon Sep 17 00:00:00 2001 From: Christopher Jefferson Date: Tue, 15 Feb 2011 20:41:56 +0000 Subject: [PATCH 253/435] libc++ declares a templated abs, which conflicts with the redefinition in math_info.cpp [SVN r68927] --- test/math_info.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/math_info.cpp b/test/math_info.cpp index e06c7454..47fe9ffe 100644 --- a/test/math_info.cpp +++ b/test/math_info.cpp @@ -181,7 +181,8 @@ bool is_same_type(T, U) // the floating point types or not: // namespace std{ -#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300) +#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300) && \ + !defined(_LIBCPP_VERSION) template char abs(T) { From dcfc12f91ef3969b3a36d5da5f6ed6787032ef79 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 23 Feb 2011 09:54:02 +0000 Subject: [PATCH 254/435] Fix typo. Fixes #5205. [SVN r69203] --- include/boost/config/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 31859144..9cce6fd7 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -600,7 +600,7 @@ namespace boost{ // the global definition into std namespace: #ifdef BOOST_NO_STD_TYPEINFO #include -namespace std{ using ::typeinfo; } +namespace std{ using ::type_info; } #endif // ---------------------------------------------------------------------------// From f6a6f2073615ee933240a84389d3ee22b5a68830 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 28 Feb 2011 18:13:22 +0000 Subject: [PATCH 255/435] Tentative fix for Apache 5.0.0 std lib. [SVN r69399] --- include/boost/config/stdlib/roguewave.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index 31c7bdda..b43623b5 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -156,7 +156,10 @@ // C++0x headers not yet implemented // +#if _RWSTD_VER < 0x05000000 # define BOOST_NO_0X_HDR_ARRAY +# define BOOST_NO_0X_HDR_TYPE_TRAITS +#endif # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT # define BOOST_NO_0X_HDR_CONCEPTS @@ -174,7 +177,6 @@ # define BOOST_NO_0X_HDR_SYSTEM_ERROR # define BOOST_NO_0X_HDR_THREAD # define BOOST_NO_0X_HDR_TUPLE -# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_0X_HDR_TYPEINDEX # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP From 4f8c31987152dede8e3e5ea7843d0ef727211755 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Tue, 1 Mar 2011 22:17:39 +0000 Subject: [PATCH 256/435] Prep for 1.46.1 [SVN r69447] --- 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 b031f6fc..c80d4282 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 104600 +#define BOOST_VERSION 104601 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,7 +27,7 @@ // 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_46" +#define BOOST_LIB_VERSION "1_46_1" #endif From 31642cc4336c04a95c43c2e5071aa46801072082 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 8 Mar 2011 17:21:50 +0000 Subject: [PATCH 257/435] Regenerate with up to date autoconf - otherwise exhibits spurious failures. [SVN r69709] --- configure | 2854 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 1696 insertions(+), 1158 deletions(-) diff --git a/configure b/configure index 75f80e2d..82d3db96 100644 --- a/configure +++ b/configure @@ -1,81 +1,35 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. +# Generated by GNU Autoconf 2.61. # -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset + setopt NO_GLOB_SUBST else - as_unset=false + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -96,124 +50,466 @@ if test "${PATH_SEPARATOR+set}" != set; then rm -f conf$$.sh fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done +IFS=$as_save_IFS - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in + case $as_dir in /*) - if ("$as_dir/$as_base" -c ' + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell autoconf@gnu.org about your system, + echo including any error possibly output before this + echo message +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || + chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -222,7 +518,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -231,39 +548,27 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= @@ -272,8 +577,63 @@ PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="./tools/configure.in" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CXX +EXEEXT +OBJEXT +LIBOBJS +LTLIBOBJS' ac_subst_files='' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC' + # Initialize some variables set by options. ac_init_help= @@ -300,34 +660,48 @@ x_libraries=NONE # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -349,33 +723,45 @@ do --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; + ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` + eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -402,6 +788,12 @@ do -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -426,13 +818,16 @@ do | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -497,6 +892,16 @@ do | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -549,24 +954,20 @@ do -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + ac_package=`echo $ac_package | sed 's/[-.]/_/g'` + eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. @@ -597,8 +998,7 @@ Try \`$0 --help' for more information." >&2 expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) @@ -618,27 +1018,19 @@ if test -n "$ac_prev"; then { (exit 1); exit 1; }; } fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix +# Be sure to have absolute directory names. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' @@ -665,70 +1057,76 @@ test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -757,9 +1155,6 @@ Configuration: -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] @@ -777,15 +1172,22 @@ Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -812,125 +1214,94 @@ Some influential environment variables: CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF +configure +generated by GNU Autoconf 2.61 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF +cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -949,7 +1320,7 @@ uname -v = `(uname -v) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -963,6 +1334,7 @@ do test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done +IFS=$as_save_IFS } >&5 @@ -984,7 +1356,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -995,7 +1366,7 @@ do -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in @@ -1017,9 +1388,7 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1030,8 +1399,8 @@ $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_ # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1044,20 +1413,34 @@ trap 'exit_status=$? _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1068,22 +1451,28 @@ _ASBOX echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1095,26 +1484,24 @@ _ASBOX ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h # Predefined preprocessor variables. @@ -1145,14 +1532,17 @@ _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +if test -n "$CONFIG_SITE"; then + set x "$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + set x "$prefix/share/config.site" "$prefix/etc/config.site" +else + set x "$ac_default_prefix/share/config.site" \ + "$ac_default_prefix/etc/config.site" fi -for ac_site_file in $CONFIG_SITE; do +shift +for ac_site_file +do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} @@ -1165,12 +1555,11 @@ done # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 @@ -1195,8 +1584,7 @@ echo "$as_me: current value: $ac_new_val" >&2;} # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in @@ -1213,6 +1601,22 @@ echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start ov { (exit 1); exit 1; }; } fi + + + + + + + + + + + + + + + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -1222,28 +1626,11 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - -# Check whether --enable-test or --disable-test was given. +# Check whether --enable-test was given. if test "${enable_test+set}" = set; then - enableval="$enable_test" + enableval=$enable_test; +fi -fi; if test "foo"$enable_test = "foo"; then enable_test="no" @@ -1282,27 +1669,27 @@ cat << EOF EOF fi -# Check whether --enable-extension or --disable-extension was given. +# Check whether --enable-extension was given. if test "${enable_extension+set}" = set; then - enableval="$enable_extension" - + enableval=$enable_extension; case "$enableval" in - no) echo "$as_me:$LINENO: result: Info :.cpp used as extension for tests" >&5 -echo "${ECHO_T}Info :.cpp used as extension for tests" >&6 + no) { echo "$as_me:$LINENO: result: Info :.cpp used as extension for tests" >&5 +echo "${ECHO_T}Info :.cpp used as extension for tests" >&6; } ac_ext=cpp ;; - *) echo "$as_me:$LINENO: result: Argument : .$enableval used as extension" >&5 -echo "${ECHO_T}Argument : .$enableval used as extension" >&6 + *) { echo "$as_me:$LINENO: result: Argument : .$enableval used as extension" >&5 +echo "${ECHO_T}Argument : .$enableval used as extension" >&6; } ac_ext=$enableval esac else - echo "$as_me:$LINENO: result: Info : .cpp used as extension for tests" >&5 -echo "${ECHO_T}Info : .cpp used as extension for tests" >&6 + { echo "$as_me:$LINENO: result: Info : .cpp used as extension for tests" >&5 +echo "${ECHO_T}Info : .cpp used as extension for tests" >&6; } ac_ext=cpp -fi; +fi + if test -f /bin/sed ; then @@ -1315,14 +1702,13 @@ else fi fi -echo "$as_me:$LINENO: checking for boost main tree" >&5 -echo $ECHO_N "checking for boost main tree... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for boost main tree" >&5 +echo $ECHO_N "checking for boost main tree... $ECHO_C" >&6; } boost_base= -# Check whether --with-boost or --without-boost was given. +# Check whether --with-boost was given. if test "${with_boost+set}" = set; then - withval="$with_boost" - + withval=$with_boost; #echo "--with boost is set" if test "x$withval" != "x"; then if test "x$withval" != no; then @@ -1341,7 +1727,8 @@ if test "${with_boost+set}" = set; then fi -fi; +fi + if test "x$boost_base" = "x"; then #echo '$0 = ' $0 boost_base=`expr "x$0" : 'x\(.*\)/[/]*' \| '.'` @@ -1356,11 +1743,11 @@ if test "x$boost_base" = "x"; then fi fi if test "x$boost_base" != "x"; then - echo "$as_me:$LINENO: result: $boost_base" >&5 -echo "${ECHO_T}$boost_base" >&6 + { echo "$as_me:$LINENO: result: $boost_base" >&5 +echo "${ECHO_T}$boost_base" >&6; } else - echo "$as_me:$LINENO: result: not found" >&5 -echo "${ECHO_T}not found" >&6 + { echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6; } { { echo "$as_me:$LINENO: error: The boost main tree was not found. Specify its location by the --with-boost option." >&5 echo "$as_me: error: The boost main tree was not found. @@ -1373,18 +1760,22 @@ fi # Save that, as it is being redefined several times use_ac_ext=$ac_ext -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1397,36 +1788,38 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 + { echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1439,49 +1832,79 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done +IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 + { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi + test -n "$ac_ct_CXX" && break done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - CXX=$ac_ct_CXX + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi fi - + fi +fi # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 +echo "$as_me:$LINENO: checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } @@ -1506,47 +1929,77 @@ ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 -echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 +echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else + ac_file='' +fi + +{ echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6; } +if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 @@ -1558,19 +2011,21 @@ See \`config.log' for more details." >&2;} fi ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 -echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 +echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -1589,22 +2044,27 @@ See \`config.log' for more details." >&2;} fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6; } -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -1615,9 +2075,8 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac @@ -1631,14 +2090,14 @@ See \`config.log' for more details." >&2;} fi rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1658,14 +2117,20 @@ main () } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac @@ -1683,12 +2148,12 @@ fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1711,50 +2176,49 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; } GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext @@ -1770,38 +2234,118 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_prog_cxx_g=no + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then @@ -1817,112 +2361,6 @@ else CXXFLAGS= fi fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -1931,7 +2369,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=$use_ac_ext -ac_ext=cc +ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' @@ -1955,8 +2393,8 @@ fi -echo "$as_me:$LINENO: checking for pthread_exit in -lpthread" >&5 -echo $ECHO_N "checking for pthread_exit in -lpthread... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for pthread_exit in -lpthread" >&5 +echo $ECHO_N "checking for pthread_exit in -lpthread... $ECHO_C" >&6; } if test "${ac_cv_lib_pthread_pthread_exit+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -1969,56 +2407,53 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char pthread_exit (); int main () { -pthread_exit (); +return pthread_exit (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_pthread_pthread_exit=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_pthread_pthread_exit=no + ac_cv_lib_pthread_pthread_exit=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_exit" >&5 -echo "${ECHO_T}$ac_cv_lib_pthread_pthread_exit" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_exit" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_exit" >&6; } if test $ac_cv_lib_pthread_pthread_exit = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 @@ -2029,8 +2464,8 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for cos in -lm" >&5 -echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for cos in -lm" >&5 +echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6; } if test "${ac_cv_lib_m_cos+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2043,56 +2478,53 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char cos (); int main () { -cos (); +return cos (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_m_cos=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_m_cos=no + ac_cv_lib_m_cos=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 -echo "${ECHO_T}$ac_cv_lib_m_cos" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 +echo "${ECHO_T}$ac_cv_lib_m_cos" >&6; } if test $ac_cv_lib_m_cos = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 @@ -2103,8 +2535,8 @@ _ACEOF fi -echo "$as_me:$LINENO: checking for clock in -lrt" >&5 -echo $ECHO_N "checking for clock in -lrt... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking for clock in -lrt" >&5 +echo $ECHO_N "checking for clock in -lrt... $ECHO_C" >&6; } if test "${ac_cv_lib_rt_clock+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else @@ -2117,56 +2549,53 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char clock (); int main () { -clock (); +return clock (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then ac_cv_lib_rt_clock=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_lib_rt_clock=no + ac_cv_lib_rt_clock=no fi -rm -f conftest.err conftest.$ac_objext \ + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock" >&5 -echo "${ECHO_T}$ac_cv_lib_rt_clock" >&6 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock" >&5 +echo "${ECHO_T}$ac_cv_lib_rt_clock" >&6; } if test $ac_cv_lib_rt_clock = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 @@ -2195,11 +2624,11 @@ for file in $boost_base/libs/config/test/boost_no*.ipp; do ac_ext=$use_ac_ext if test $enable_test = 'yes'; then - echo "$as_me:$LINENO: checking $title (pass expected) " >&5 -echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking $title (pass expected) " >&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; } else - echo "$as_me:$LINENO: checking $title " >&5 -echo $ECHO_N "checking $title ... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking $title " >&5 +echo $ECHO_N "checking $title ... $ECHO_C" >&6; } fi if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling @@ -2228,18 +2657,27 @@ int main(){ return ${namespace}::test(); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: OK" >&5 -echo "${ECHO_T}OK" >&6 + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } else echo "$as_me: program exited with status $ac_status" >&5 @@ -2247,19 +2685,21 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: Failed" >&5 -echo "${ECHO_T}Failed" >&6 +{ echo "$as_me:$LINENO: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6; } required_defs="$macroname $required_defs" fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + if test $enable_test = 'yes'; then ac_ext=$use_ac_ext - echo "$as_me:$LINENO: checking $title (fail expected) " >&5 -echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 @@ -2287,18 +2727,27 @@ int main() { return ${namespace}::test(); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6 + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } required_undefs="$macroname $required_undefs" else @@ -2307,13 +2756,15 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: OK" >&5 -echo "${ECHO_T}OK" >&6 +{ echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi done @@ -2335,8 +2786,8 @@ for file in $boost_base/libs/config/test/boost_has*.ipp; do ac_ext=$use_ac_ext if test $enable_test = 'yes'; then - echo "$as_me:$LINENO: checking $title (pass expected) " >&5 -echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking $title (pass expected) " >&5 +echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 @@ -2364,18 +2815,27 @@ int main(){ return ${namespace}::test(); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: OK" >&5 -echo "${ECHO_T}OK" >&6 + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } else echo "$as_me: program exited with status $ac_status" >&5 @@ -2383,16 +2843,18 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) -echo "$as_me:$LINENO: result: Failed" >&5 -echo "${ECHO_T}Failed" >&6 +{ echo "$as_me:$LINENO: result: Failed" >&5 +echo "${ECHO_T}Failed" >&6; } required_undefs="$macroname $required_undefs" fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi - echo "$as_me:$LINENO: checking $title (fail expected) " >&5 -echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6 + + + { echo "$as_me:$LINENO: checking $title (fail expected) " >&5 +echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 @@ -2420,19 +2882,28 @@ int main(){ return ${namespace}::test(); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6 + { echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6; } required_defs="$macroname $required_defs" @@ -2443,19 +2914,21 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) - echo "$as_me:$LINENO: result: OK" >&5 -echo "${ECHO_T}OK" >&6 + { echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6; } fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + else ac_ext=$use_ac_ext - echo "$as_me:$LINENO: checking $title" >&5 -echo $ECHO_N "checking $title... $ECHO_C" >&6 + { echo "$as_me:$LINENO: checking $title" >&5 +echo $ECHO_N "checking $title... $ECHO_C" >&6; } if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 @@ -2479,19 +2952,28 @@ int main(){ return ${namespace}::test(); } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: Yes" >&5 -echo "${ECHO_T}Yes" >&6 + { echo "$as_me:$LINENO: result: Yes" >&5 +echo "${ECHO_T}Yes" >&6; } required_defs="$macroname $required_defs" @@ -2502,14 +2984,16 @@ sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi + + fi done @@ -2598,82 +3082,67 @@ cat_conts=`cat user.hpp` # # post configuration step: # -echo "$as_me:$LINENO: checking original configuration " >&5 -echo $ECHO_N "checking original configuration ... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: checking original configuration " >&5 +echo $ECHO_N "checking original configuration ... $ECHO_C" >&6; } rm -f conftest$ac_exeext $CXX -I$boost_base $OLD_CXXFLAGS -DBOOST_NO_USER_CONFIG -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1 ./conftest >&5 2>&1 -echo "$as_me:$LINENO: result: done" >&5 -echo "${ECHO_T}done" >&6 -echo "$as_me:$LINENO: checking new configuration " >&5 -echo $ECHO_N "checking new configuration ... $ECHO_C" >&6 +{ echo "$as_me:$LINENO: result: done" >&5 +echo "${ECHO_T}done" >&6; } +{ echo "$as_me:$LINENO: checking new configuration " >&5 +echo $ECHO_N "checking new configuration ... $ECHO_C" >&6; } rm -f conftest$ac_exeext $CXX -I$boost_base -I$boost_base/libs/config $OLD_CXXFLAGS -DBOOST_USER_CONFIG='"user.hpp"' -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1 ./conftest >&5 2>&1 -echo "$as_me:$LINENO: result: done" >&5 -echo "${ECHO_T}done" >&6 +{ echo "$as_me:$LINENO: result: done" >&5 +echo "${ECHO_T}done" >&6; } + +ac_config_commands="$ac_config_commands default" - ac_config_commands="$ac_config_commands default" test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that -# take arguments), then we branch to the quote section. Otherwise, +# take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. -cat >confdef2opt.sed <<\_ACEOF +ac_script=' t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote -d -: quote -s,[ `~#$^&*(){}\\|;'"<>?],\\&,g -s,\[,\\&,g -s,\],\\&,g -s,\$,$$,g -p -_ACEOF -# We use echo to avoid assuming a particular line-breaking character. -# The extra dot is to prevent the shell from consuming trailing -# line-breaks from the sub-command output. A line-break within -# single-quotes doesn't work because, if this script is created in a -# platform that uses two characters for line-breaks (e.g., DOS), tr -# would break. -ac_LF_and_DOT=`echo; echo .` -DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` -rm -f confdef2opt.sed +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -2708,73 +3177,26 @@ cat >>$CONFIG_STATUS <<\_ACEOF ## M4sh Initialization. ## ## --------------------- ## -# Be Bourne compatible +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset + setopt NO_GLOB_SUBST else - as_unset=false + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - -# PATH needs CR, and LINENO needs CR and PATH. +# PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -2795,126 +3217,198 @@ if test "${PATH_SEPARATOR+set}" != set; then rm -f conf$$.sh fi +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +as_nl=' +' +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done +IFS=$as_save_IFS - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + as_lineno_1=$LINENO as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir +fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: @@ -2923,7 +3417,28 @@ else as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -2932,31 +3447,14 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - exec 6>&1 -# Open the log real soon, to keep \$[0] and so on meaningful, and to +# Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - +# values after options handling. +ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was +generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2964,30 +3462,18 @@ generated by GNU Autoconf 2.59. Invocation command line was CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + _ACEOF +cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +config_commands="$ac_config_commands" -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_ACEOF cat >>$CONFIG_STATUS <<\_ACEOF - ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. @@ -2995,7 +3481,7 @@ current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit - -V, --version print version number, then exit + -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions @@ -3004,18 +3490,20 @@ Configuration commands: $config_commands Report bugs to ." -_ACEOF +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.61, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir + +ac_pwd='$ac_pwd' +srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF @@ -3026,60 +3514,38 @@ while test $# != 0 do case $1 in --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; - -*) + *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac case $ac_option in # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} + -*) { echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; - *) ac_config_targets="$ac_config_targets $1" ;; + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; esac shift @@ -3095,38 +3561,50 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + CONFIG_SHELL=$SHELL + export CONFIG_SHELL + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + echo "$ac_log" +} >&5 +_ACEOF cat >>$CONFIG_STATUS <<_ACEOF # -# INIT-COMMANDS section. +# INIT-COMMANDS # - cat_conts="$cat_conts" _ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF + +# Handling of arguments. for ac_config_target in $ac_config_targets do - case "$ac_config_target" in - # Handling of arguments. - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + case $ac_config_target in + "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done + # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely @@ -3136,147 +3614,207 @@ if $ac_need_defaults; then fi # Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, +# simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. $debug || { - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } - # Create a (secure) tmp directory for tmp files. { - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +for ac_tag in :C $CONFIG_COMMANDS +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + ac_file_inputs="$ac_file_inputs $ac_f" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input="Generated from "`IFS=: + echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + fi + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin";; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || + while :; do + case $as_dir in #( + *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } - ac_builddir=. -if test "$ac_dir" != .; then +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - default ) + case $ac_mode in + + + + :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5 +echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "default":C) cat > user.hpp << EEEOF ${cat_conts} EEEOF @@ -3291,11 +3829,10 @@ Autoconf generated options are not infallible! EEEOF ;; - esac -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF + esac +done # for ac_tag + { (exit 0); exit 0; } _ACEOF @@ -3352,5 +3889,6 @@ fi + From 0fcc6c06df45b921b2e125ec5ff112d95d72c75f Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 8 Mar 2011 18:14:41 +0000 Subject: [PATCH 258/435] Change to test C++0x features only. [SVN r69721] --- test/boost_no_fenv_h.ipp | 58 ++++++++++++---------------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp index 97ed5124..7bfe4446 100644 --- a/test/boost_no_fenv_h.ipp +++ b/test/boost_no_fenv_h.ipp @@ -8,7 +8,7 @@ // MACRO: BOOST_NO_FENV_H // TITLE: fenv.h -// DESCRIPTION: There is no POSIX available. If is +// DESCRIPTION: There is no standard available. If is // available, should be included // instead of directly including . @@ -18,11 +18,11 @@ namespace boost_no_fenv_h { int test() { - /// POSIX required typedefs + /// C++0x required typedefs typedef ::fenv_t has_fenv_t; typedef ::fexcept_t has_fexcept_t; - /// POSIX required macros + /// C++0x required macros #if !defined(FE_DIVBYZERO) #error platform does not define FE_DIVBYZERO #endif @@ -31,47 +31,23 @@ int test() #error platform does not define FE_INEXACT #endif - #if !defined(FE_INVALID) - #error platform does not define FE_INVALID + #if !defined(FE_ALL_EXCEPT) + #error platform does not define FE_ALL_EXCEPT #endif - #if !defined(FE_OVERFLOW) - #error platform does not define FE_OVERFLOW - #endif + int (*has_feclearexcept)(int ) = ::feclearexcept; + int (*has_fegetexceptflag)(fexcept_t *, int ) = fegetexceptflag; + int (*has_feraiseexcept)(int ) = feraiseexcept; + int (*has_fesetexceptflag)(const fexcept_t *, int ) = fesetexceptflag; + int (*has_fetestexcept)(int ) = fetestexcept; + int (*has_fegetround)(void) = fegetround; + int (*has_fesetround)(int ) = fesetround; + int (*has_fegetenv)(fenv_t *) = fegetenv; + int (*has_feholdexcept)(fenv_t *) = feholdexcept; + int (*has_fesetenv)(const fenv_t *) = fesetenv; + int (*has_feupdateenv)(const fenv_t *) = feupdateenv; - #if !defined(FE_UNDERFLOW) - #error platform does not define FE_UNDERFLOW - #endif - - #if !defined(FE_DOWNWARD) - #error platform does not define FE_DOWNWARD - #endif - - #if !defined(FE_TONEAREST) - #error platform does not define FE_TONEAREST - #endif - - #if !defined(FE_UPWARD) - #error platform does not define FE_UPWARD - #endif - - #if !defined(FE_DFL_ENV) - #error platform does not define FE_DFL_ENV - #endif - - int (*has_feclearexcept)(int) = ::feclearexcept; - int (*has_fegetenv)(fenv_t*) = ::fegetenv; - int (*has_fegetexcept)(fexcept_t*, int) = ::fegetexcept; - int (*has_fegetround)(void) = ::fegetround; - int (*has_feholdexcept)(fenv_t*) = ::feholdexcept; - int (*has_feraiseexcept)(int) = ::feraiseexcept; - int (*has_fesetenv)(const fenv_t*) = ::fesetenv; - int (*has_fesetexceptflag)(const fexcept_t*, int) = ::fesetexceptflag; - int (*has_fesetround)(int) = ::fesetround; - int (*has_fetestexcept)(int) = ::fetestexcept; - int (*has_feupdateenv)(const fenv_t*) = ::feupdateenv; - - return 0; + return 0; } } From 795abaa3e3c520e56479a180cd9e0d6515fb50df Mon Sep 17 00:00:00 2001 From: John Maddock Date: Thu, 10 Mar 2011 11:09:55 +0000 Subject: [PATCH 259/435] MPTasks support has been absent from Boost for some time, remove it from here. [SVN r69817] --- include/boost/config/platform/macos.hpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp index 2780ef99..6d876b12 100644 --- a/include/boost/config/platform/macos.hpp +++ b/include/boost/config/platform/macos.hpp @@ -64,16 +64,17 @@ # if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON ) # if !defined(BOOST_HAS_PTHREADS) -# define BOOST_HAS_MPTASKS +// MPTasks support is deprecated/removed from Boost: +//# define BOOST_HAS_MPTASKS # elif ( __dest_os == __mac_os_x ) // We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the // gettimeofday and no posix. # define BOOST_HAS_GETTIMEOFDAY # endif -// The MP task implementation of Boost Threads aims to replace MP-unsafe -// parts of the MSL, so we turn on threads unconditionally. -# define BOOST_HAS_THREADS +#ifdef BOOST_HAS_PTHREADS +# define BOOST_HAS_THREADS +#endif // The remote call manager depends on this. # define BOOST_BIND_ENABLE_PASCAL From 03877f58056a45a23c54e7e7920e2579d7cb7056 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Tue, 15 Mar 2011 13:17:46 +0000 Subject: [PATCH 260/435] Remove std::concept test macros since these are no longer part of the std. Update GCC C++0x support. Improve the tests for C++0x support. Regenerate the docs. Update generation program to Boost.Filesystem v3. [SVN r70001] --- .../boost_config/boost_macro_reference.html | 116 ++++-------------- .../guidelines_for_boost_authors.html | 8 +- doc/html/index.html | 16 +-- doc/macro_reference.qbk | 6 - include/boost/config/compiler/borland.hpp | 1 - include/boost/config/compiler/clang.hpp | 1 - include/boost/config/compiler/codegear.hpp | 1 - include/boost/config/compiler/common_edg.hpp | 1 - include/boost/config/compiler/digitalmars.hpp | 1 - include/boost/config/compiler/gcc.hpp | 45 ++++--- include/boost/config/compiler/hp_acc.hpp | 1 - include/boost/config/compiler/metrowerks.hpp | 1 - include/boost/config/compiler/mpw.hpp | 1 - include/boost/config/compiler/pathscale.hpp | 5 - include/boost/config/compiler/pgi.hpp | 1 - include/boost/config/compiler/sunpro_cc.hpp | 1 - include/boost/config/compiler/vacpp.hpp | 1 - include/boost/config/compiler/visualc.hpp | 1 - include/boost/config/platform/linux.hpp | 1 + include/boost/config/stdlib/dinkumware.hpp | 10 +- include/boost/config/stdlib/libcomo.hpp | 4 - include/boost/config/stdlib/libcpp.hpp | 5 - include/boost/config/stdlib/libstdcpp3.hpp | 17 ++- include/boost/config/stdlib/modena.hpp | 4 - include/boost/config/stdlib/msl.hpp | 4 - include/boost/config/stdlib/roguewave.hpp | 4 - include/boost/config/stdlib/sgi.hpp | 4 - include/boost/config/stdlib/stlport.hpp | 4 - include/boost/config/stdlib/vacpp.hpp | 4 - include/boost/config/suffix.hpp | 3 + test/all/Jamfile.v2 | 23 +--- test/boost_has_concepts.ipp | 23 ---- test/boost_no_0x_hdr_array.ipp | 3 +- test/boost_no_0x_hdr_chrono.ipp | 9 ++ test/boost_no_0x_hdr_codecvt.ipp | 3 + test/boost_no_0x_hdr_concepts.ipp | 22 ---- test/boost_no_0x_hdr_condition_variable.ipp | 2 + test/boost_no_0x_hdr_container_concepts.ipp | 22 ---- test/boost_no_0x_hdr_forward_list.ipp | 3 +- test/boost_no_0x_hdr_future.ipp | 13 ++ test/boost_no_0x_hdr_initializer_list.ipp | 5 + test/boost_no_0x_hdr_iterator_concepts.ipp | 22 ---- test/boost_no_0x_hdr_memory_concepts.ipp | 22 ---- test/boost_no_0x_hdr_mutex.ipp | 4 + test/boost_no_0x_hdr_random.ipp | 9 ++ test/boost_no_0x_hdr_ratio.ipp | 15 +++ test/boost_no_0x_hdr_regex.ipp | 2 + test/boost_no_0x_hdr_system_error.ipp | 4 + test/boost_no_0x_hdr_thread.ipp | 5 + test/boost_no_0x_hdr_type_traits.ipp | 84 +++++++++++++ test/boost_no_0x_hdr_unordered_map.ipp | 4 +- test/boost_no_0x_hdr_unordered_set.ipp | 4 +- test/boost_no_concepts.ipp | 22 ---- test/boost_no_constexpr.ipp | 20 +++ test/boost_no_initializer_lists.ipp | 1 + test/boost_no_scoped_enums.ipp | 9 +- test/config_info.cpp | 9 +- test/config_test.cpp | 72 ++--------- test/has_concepts_fail.cpp | 34 ----- test/has_concepts_pass.cpp | 34 ----- test/no_0x_hdr_concepts_fail.cpp | 37 ------ test/no_0x_hdr_concepts_pass.cpp | 37 ------ test/no_0x_hdr_container_concepts_fail.cpp | 37 ------ test/no_0x_hdr_container_concepts_pass.cpp | 37 ------ test/no_0x_hdr_iterator_concepts_fail.cpp | 37 ------ test/no_0x_hdr_iterator_concepts_pass.cpp | 37 ------ test/no_0x_hdr_memory_concepts_fail.cpp | 37 ------ test/no_0x_hdr_memory_concepts_pass.cpp | 37 ------ test/no_concepts_fail.cpp | 37 ------ test/no_concepts_pass.cpp | 37 ------ tools/generate.cpp | 30 ++--- 71 files changed, 301 insertions(+), 875 deletions(-) delete mode 100644 test/boost_has_concepts.ipp delete mode 100644 test/boost_no_0x_hdr_concepts.ipp delete mode 100644 test/boost_no_0x_hdr_container_concepts.ipp delete mode 100644 test/boost_no_0x_hdr_iterator_concepts.ipp delete mode 100644 test/boost_no_0x_hdr_memory_concepts.ipp delete mode 100644 test/boost_no_concepts.ipp delete mode 100644 test/has_concepts_fail.cpp delete mode 100644 test/has_concepts_pass.cpp delete mode 100644 test/no_0x_hdr_concepts_fail.cpp delete mode 100644 test/no_0x_hdr_concepts_pass.cpp delete mode 100644 test/no_0x_hdr_container_concepts_fail.cpp delete mode 100644 test/no_0x_hdr_container_concepts_pass.cpp delete mode 100644 test/no_0x_hdr_iterator_concepts_fail.cpp delete mode 100644 test/no_0x_hdr_iterator_concepts_pass.cpp delete mode 100644 test/no_0x_hdr_memory_concepts_fail.cpp delete mode 100644 test/no_0x_hdr_memory_concepts_pass.cpp delete mode 100644 test/no_concepts_fail.cpp delete mode 100644 test/no_concepts_pass.cpp diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 7986b6b3..e1b2271f 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -42,14 +42,12 @@
                                        Macros for libraries with separate source code
                                        -

                                        -

                                        -

                                        +

                                        The following macros all describe features that are required by the C++ standard, if one of the following macros is defined, then it represents a defect in the compiler's conformance with the standard. @@ -282,6 +280,26 @@ + +

                                        + BOOST_NO_FENV_H +

                                        + + +

                                        + Platform, Standard library +

                                        + + +

                                        + The C standard library doesn't provide <fenv.h>. + <boost/detail/fenv.hpp> + should be included instead of <fenv.h> + for maximum portability on platforms which do provide <fenv.h>. +

                                        + + +

                                        BOOST_NO_DEPENDENT_NESTED_DERIVATIONS @@ -1306,14 +1324,12 @@

                                        -

                                        -

                                        -

                                        +

                                        The following macros describe features that are not required by the C++ standard. The macro is only defined if the feature is present.

                                        @@ -1695,26 +1711,6 @@ - -

                                        - BOOST_HAS_FENV_H -

                                        - - -

                                        - Platform, Standard library -

                                        - - -

                                        - The platform has a <fenv.h>. - <boost/detail/fenv.hpp> - should be included instead of <fenv.h> - for maximum portability. -

                                        - - -

                                        BOOST_HAS_STDINT_H @@ -2325,18 +2321,6 @@ - -

                                        - BOOST_NO_0X_HDR_CONCEPTS -

                                        - - -

                                        - The standard library does not provide header <concepts>. -

                                        - - -

                                        BOOST_NO_0X_HDR_CONDITION_VARIABLE @@ -2349,18 +2333,6 @@ - -

                                        - BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -

                                        - - -

                                        - The standard library does not provide header <container_concepts>. -

                                        - - -

                                        BOOST_NO_0X_HDR_FORWARD_LIST @@ -2397,30 +2369,6 @@ - -

                                        - BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -

                                        - - -

                                        - The standard library does not provide header <iterator_concepts>. -

                                        - - - - -

                                        - BOOST_NO_0X_HDR_MEMORY_CONCEPTS -

                                        - - -

                                        - The standard library does not provide header <memory_concepts>. -

                                        - - -

                                        BOOST_NO_0X_HDR_MUTEX @@ -2609,18 +2557,6 @@ - -

                                        - BOOST_NO_CONCEPTS -

                                        - - -

                                        - The compiler does not support Concepts. -

                                        - - -

                                        BOOST_NO_TEMPLATE_ALIASES @@ -2883,14 +2819,12 @@

                                        -

                                        -

                                        -

                                        +

                                        The following macros are either simple helpers, or macros that provide workarounds for compiler/standard library defects.

                                        @@ -3294,14 +3228,12 @@
                                        -

                                        -

                                        -

                                        +

                                        The following macros describe boost features; these are, generally speaking the only boost macros that should be tested in user code.

                                        diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 820adb10..d429863e 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -28,8 +28,8 @@ Boost Authors

                                      The header <boost/config/warning_disable.hpp> diff --git a/doc/html/index.html b/doc/html/index.html index caec8875..e13b8a9f 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -28,7 +28,7 @@

                                    -

                                    +

                                    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

                                    @@ -75,8 +75,8 @@
                                    Guidelines for Boost Authors
                                    -
                                    - Disabling Compiler Warnings
                                    +
                                    Disabling + Compiler Warnings
                                    Adding New Defect Macros
                                    Adding @@ -166,14 +166,12 @@ developers list.

                                    -

                                    -

                                    -
                                    +
                                    @@ -310,14 +308,12 @@ -

                                    -

                                    -

                                    +

                                    There are some configuration-options that represent user choices, rather than compiler defects or platform specific options. These are listed in <boost/config/user.hpp> @@ -950,7 +946,7 @@

                                    [Important] Important
                                    - +

                                    Last revised: November 23, 2010 at 03:21:20 GMT

                                    Last revised: March 15, 2011 at 13:01:43 GMT


                                    diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 7f84ef44..ee57bbc1 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -539,14 +539,10 @@ that are not yet supported by a particular compiler or library. [[`BOOST_NO_0X_HDR_ARRAY`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_CHRONO`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_CODECVT`][The standard library does not provide header .]] -[[`BOOST_NO_0X_HDR_CONCEPTS`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_CONDITION_VARIABLE`][The standard library does not provide header .]] -[[`BOOST_NO_0X_HDR_CONTAINER_CONCEPTS`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_FORWARD_LIST`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_FUTURE`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_INITIALIZER_LIST`][The standard library does not provide header .]] -[[`BOOST_NO_0X_HDR_ITERATOR_CONCEPTS`][The standard library does not provide header .]] -[[`BOOST_NO_0X_HDR_MEMORY_CONCEPTS`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_MUTEX`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_RANDOM`][The standard library does not provide header .]] [[`BOOST_NO_0X_HDR_RATIO`][The standard library does not provide header .]] @@ -571,8 +567,6 @@ type `char16_t`. [[`BOOST_NO_CHAR32_T`][The compiler does not support type `char32_t`. ]] -[[`BOOST_NO_CONCEPTS`][The compiler does not support Concepts. -]] [[`BOOST_NO_TEMPLATE_ALIASES`][The compiler does not support template aliases. ]] [[`BOOST_NO_CONSTEXPR`][The compiler does not support diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index a989fd63..7801c7fb 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -166,7 +166,6 @@ #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 08930337..4bb0d1f1 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -29,7 +29,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #if !__has_feature(cxx_decltype) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index f6dc4c02..9584a4e7 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -93,7 +93,6 @@ #define BOOST_NO_AUTO_DECLARATIONS #define BOOST_NO_AUTO_MULTIDECLARATIONS -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DELETED_FUNCTIONS diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 9042578b..e55fb714 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -74,7 +74,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 31c11bf0..ebeef767 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -62,7 +62,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index f633647d..651a8c38 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -168,7 +168,7 @@ // Variadic templates compiler: // http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html -# ifdef __VARIADIC_TEMPLATES +# if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) # define BOOST_HAS_VARIADIC_TMPL # else # define BOOST_NO_VARIADIC_TEMPLATES @@ -182,54 +182,59 @@ # define BOOST_NO_AUTO_MULTIDECLARATIONS # define BOOST_NO_CHAR16_T # define BOOST_NO_CHAR32_T +# define BOOST_NO_INITIALIZER_LISTS +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) +// +// These appear to always be available in GCC-4.4.x regardless of +// whether we are in C++ 0x mode or not: +// # define BOOST_NO_DEFAULTED_FUNCTIONS # define BOOST_NO_DELETED_FUNCTIONS -# define BOOST_NO_INITIALIZER_LISTS -# define BOOST_NO_SCOPED_ENUMS +#endif #endif #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) # define BOOST_NO_SFINAE_EXPR #endif -// C++0x features in 4.4.1 and later -// -#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40401) || !defined(__GXX_EXPERIMENTAL_CXX0X__) -// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS before 4.4.1 -// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 -# define BOOST_NO_SCOPED_ENUMS -#endif - -// C++0x features in 4.5.n and later +// C++0x features in 4.5.0 and later // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) +// These two appear to be always available: # define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_LAMBDAS +#endif # define BOOST_NO_RAW_LITERALS # define BOOST_NO_UNICODE_LITERALS #endif -// C++0x features in 4.5.n and later +// C++0x features in 4.5.1 and later +// +#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__) +// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_SCOPED_ENUMS before 4.5.1 +// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 +# define BOOST_NO_SCOPED_ENUMS +#endif + +// C++0x features in 4.6.n and later // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #define BOOST_NO_CONSTEXPR #define BOOST_NO_NULLPTR #endif +#ifndef BOOST_COMPILER +# define BOOST_COMPILER "GNU C++ version " __VERSION__ +#endif + // ConceptGCC compiler: // http://www.generic-programming.org/software/ConceptGCC/ #ifdef __GXX_CONCEPTS__ # define BOOST_HAS_CONCEPTS # define BOOST_COMPILER "ConceptGCC version " __VERSION__ -#else -# define BOOST_NO_CONCEPTS #endif -#ifndef BOOST_COMPILER -# define BOOST_COMPILER "GNU C++ version " __VERSION__ -#endif - -// // versions check: // we don't know gcc prior to version 2.90: #if (__GNUC__ == 2) && (__GNUC_MINOR__ < 90) diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp index d0b672ec..1515ae7c 100644 --- a/include/boost/config/compiler/hp_acc.hpp +++ b/include/boost/config/compiler/hp_acc.hpp @@ -96,7 +96,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 21083b7a..4b9619fb 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -96,7 +96,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index ae12f801..a8c3aae5 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -44,7 +44,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 13ede88d..8d986f3f 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -52,7 +52,6 @@ # define BOOST_NO_DEFAULTED_FUNCTIONS # define BOOST_NO_DECLTYPE # define BOOST_NO_CONSTEXPR -# define BOOST_NO_CONCEPTS # define BOOST_NO_COMPLETE_VALUE_INITIALIZATION # define BOOST_NO_CHAR32_T # define BOOST_NO_CHAR16_T @@ -68,14 +67,10 @@ # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_MUTEX -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS # define BOOST_NO_0X_HDR_INITIALIZER_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_FORWARD_LIST -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CODECVT # define BOOST_NO_0X_HDR_CHRONO #endif diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index fb3a6c0b..0078e986 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -51,7 +51,6 @@ // #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 85fa4625..86f3f246 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -103,7 +103,6 @@ #define BOOST_NO_AUTO_MULTIDECLARATIONS #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DECLTYPE #define BOOST_NO_DEFAULTED_FUNCTIONS diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 7ad616e4..419c420d 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -78,7 +78,6 @@ # define BOOST_NO_CHAR16_T # define BOOST_NO_CHAR32_T #endif -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #if ! __IBMCPP_DECLTYPE # define BOOST_NO_DECLTYPE diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 38789367..a0204529 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -188,7 +188,6 @@ // C++0x features not supported by any versions #define BOOST_NO_CHAR16_T #define BOOST_NO_CHAR32_T -#define BOOST_NO_CONCEPTS #define BOOST_NO_CONSTEXPR #define BOOST_NO_DEFAULTED_FUNCTIONS #define BOOST_NO_DECLTYPE diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index 51ae1334..6fdea0d6 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -68,6 +68,7 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H #include +#define BOOST_HAS_PTHREAD_YIELD #ifndef __GNUC__ // diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index a7579daa..33b56088 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -101,7 +101,6 @@ # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_REGEX # define BOOST_NO_0X_HDR_SYSTEM_ERROR -# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET @@ -113,16 +112,13 @@ #if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE) # define BOOST_NO_0X_HDR_TUPLE #endif - -// C++0x headers not yet implemented // +// C++0x headers not yet (fully) implemented: +// +# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_0X_HDR_CHRONO -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FUTURE -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_THREAD diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp index 16a842ae..341cf970 100644 --- a/include/boost/config/stdlib/libcomo.hpp +++ b/include/boost/config/stdlib/libcomo.hpp @@ -38,14 +38,10 @@ # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index db7f6f15..380ac2ae 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -19,11 +19,6 @@ #define BOOST_HAS_THREADS -#define BOOST_NO_0X_HDR_CONCEPTS -#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS - #ifdef _LIBCPP_HAS_NO_VARIADICS # define BOOST_NO_0X_HDR_TUPLE #endif diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index c048b896..8d643224 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -104,10 +104,8 @@ // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_0X_HDR_ARRAY -# define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_REGEX # define BOOST_NO_0X_HDR_TUPLE -# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_STD_UNORDERED // deprecated; see following # define BOOST_NO_0X_HDR_UNORDERED_MAP # define BOOST_NO_0X_HDR_UNORDERED_SET @@ -123,23 +121,24 @@ # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RATIO # define BOOST_NO_0X_HDR_SYSTEM_ERROR -# define BOOST_NO_0X_HDR_THREAD +#else +# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +# define BOOST_HAS_TR1_COMPLEX_OVERLOADS #endif // C++0x features in GCC 4.5.0 and later // #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) # define BOOST_NO_NUMERIC_LIMITS_LOWEST +# define BOOST_NO_0X_HDR_FUTURE +# define BOOST_NO_0X_HDR_RANDOM #endif -// C++0x headers not yet implemented +// C++0x headers not yet (fully!) implemented // +# define BOOST_NO_0X_HDR_THREAD +# define BOOST_NO_0X_HDR_TYPE_TRAITS # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -# define BOOST_NO_0X_HDR_FUTURE -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_TYPEINDEX // --- end --- diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp index 147060d9..626e712b 100644 --- a/include/boost/config/stdlib/modena.hpp +++ b/include/boost/config/stdlib/modena.hpp @@ -27,14 +27,10 @@ # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp index 8185e351..adb3d478 100644 --- a/include/boost/config/stdlib/msl.hpp +++ b/include/boost/config/stdlib/msl.hpp @@ -51,14 +51,10 @@ # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp index b43623b5..fad076dd 100644 --- a/include/boost/config/stdlib/roguewave.hpp +++ b/include/boost/config/stdlib/roguewave.hpp @@ -162,14 +162,10 @@ #endif # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp index 5731fe5e..c8d77d55 100644 --- a/include/boost/config/stdlib/sgi.hpp +++ b/include/boost/config/stdlib/sgi.hpp @@ -121,14 +121,10 @@ # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp index 85176a4d..d3069992 100644 --- a/include/boost/config/stdlib/stlport.hpp +++ b/include/boost/config/stdlib/stlport.hpp @@ -215,14 +215,10 @@ namespace boost { using std::min; using std::max; } # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp index 3fcf6e05..32a1fc08 100644 --- a/include/boost/config/stdlib/vacpp.hpp +++ b/include/boost/config/stdlib/vacpp.hpp @@ -27,14 +27,10 @@ # define BOOST_NO_0X_HDR_ARRAY # define BOOST_NO_0X_HDR_CHRONO # define BOOST_NO_0X_HDR_CODECVT -# define BOOST_NO_0X_HDR_CONCEPTS # define BOOST_NO_0X_HDR_CONDITION_VARIABLE -# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS # define BOOST_NO_0X_HDR_FORWARD_LIST # define BOOST_NO_0X_HDR_FUTURE # define BOOST_NO_0X_HDR_INITIALIZER_LIST -# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS # define BOOST_NO_0X_HDR_MUTEX # define BOOST_NO_0X_HDR_RANDOM # define BOOST_NO_0X_HDR_RATIO diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index 9cce6fd7..3f7e5ad7 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -341,6 +341,9 @@ #if defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS) # define BOOST_NO_INITIALIZER_LISTS #endif +#if defined(BOOST_NO_INITIALIZER_LISTS) && !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST) +# define BOOST_NO_0X_HDR_INITIALIZER_LIST +#endif // // Set BOOST_HAS_RVALUE_REFS when BOOST_NO_RVALUE_REFERENCES is not defined diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 3321838b..fa3fbfd4 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 Sat Sep 25 16:53:42 2010 +# This file was automatically generated on Tue Mar 15 12:25:21 2011 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -31,9 +31,6 @@ test-suite "BOOST_HAS_BETHREADS" : test-suite "BOOST_HAS_CLOCK_GETTIME" : [ run ../has_clock_gettime_pass.cpp ] [ compile-fail ../has_clock_gettime_fail.cpp ] ; -test-suite "BOOST_HAS_CONCEPTS" : -[ run ../has_concepts_pass.cpp ] -[ compile-fail ../has_concepts_fail.cpp ] ; test-suite "BOOST_HAS_DIRENT_H" : [ run ../has_dirent_h_pass.cpp ] [ compile-fail ../has_dirent_h_fail.cpp ] ; @@ -184,15 +181,9 @@ test-suite "BOOST_NO_0X_HDR_CHRONO" : test-suite "BOOST_NO_0X_HDR_CODECVT" : [ run ../no_0x_hdr_codecvt_pass.cpp ] [ compile-fail ../no_0x_hdr_codecvt_fail.cpp ] ; -test-suite "BOOST_NO_0X_HDR_CONCEPTS" : -[ run ../no_0x_hdr_concepts_pass.cpp ] -[ compile-fail ../no_0x_hdr_concepts_fail.cpp ] ; test-suite "BOOST_NO_0X_HDR_CONDITION_VARIABLE" : [ run ../no_0x_hdr_condition_variable_pass.cpp ] [ compile-fail ../no_0x_hdr_condition_variable_fail.cpp ] ; -test-suite "BOOST_NO_0X_HDR_CONTAINER_CONCEPTS" : -[ run ../no_0x_hdr_container_concepts_pass.cpp ] -[ compile-fail ../no_0x_hdr_container_concepts_fail.cpp ] ; test-suite "BOOST_NO_0X_HDR_FORWARD_LIST" : [ run ../no_0x_hdr_forward_list_pass.cpp ] [ compile-fail ../no_0x_hdr_forward_list_fail.cpp ] ; @@ -202,12 +193,6 @@ test-suite "BOOST_NO_0X_HDR_FUTURE" : test-suite "BOOST_NO_0X_HDR_INITIALIZER_LIST" : [ run ../no_0x_hdr_initializer_list_pass.cpp ] [ compile-fail ../no_0x_hdr_initializer_list_fail.cpp ] ; -test-suite "BOOST_NO_0X_HDR_ITERATOR_CONCEPTS" : -[ run ../no_0x_hdr_iterator_concepts_pass.cpp ] -[ compile-fail ../no_0x_hdr_iterator_concepts_fail.cpp ] ; -test-suite "BOOST_NO_0X_HDR_MEMORY_CONCEPTS" : -[ run ../no_0x_hdr_memory_concepts_pass.cpp ] -[ compile-fail ../no_0x_hdr_memory_concepts_fail.cpp ] ; test-suite "BOOST_NO_0X_HDR_MUTEX" : [ run ../no_0x_hdr_mutex_pass.cpp ] [ compile-fail ../no_0x_hdr_mutex_fail.cpp ] ; @@ -271,9 +256,6 @@ test-suite "BOOST_NO_CHAR32_T" : test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" : [ run ../no_com_value_init_pass.cpp ] [ compile-fail ../no_com_value_init_fail.cpp ] ; -test-suite "BOOST_NO_CONCEPTS" : -[ run ../no_concepts_pass.cpp ] -[ compile-fail ../no_concepts_fail.cpp ] ; test-suite "BOOST_NO_CONSTEXPR" : [ run ../no_constexpr_pass.cpp ] [ compile-fail ../no_constexpr_fail.cpp ] ; @@ -325,6 +307,9 @@ test-suite "BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS" : test-suite "BOOST_NO_EXTERN_TEMPLATE" : [ run ../no_extern_template_pass.cpp ] [ compile-fail ../no_extern_template_fail.cpp ] ; +test-suite "BOOST_NO_FENV_H" : +[ run ../no_fenv_h_pass.cpp ] +[ compile-fail ../no_fenv_h_fail.cpp ] ; test-suite "BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS" : [ run ../no_function_template_default_args_pass.cpp ] [ compile-fail ../no_function_template_default_args_fail.cpp ] ; diff --git a/test/boost_has_concepts.ipp b/test/boost_has_concepts.ipp deleted file mode 100644 index abc1740a..00000000 --- a/test/boost_has_concepts.ipp +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (C) 2007 Douglas Gregor -// 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_HAS_CONCEPTS -// TITLE: concepts -// DESCRIPTION: The compiler supports C++0x concepts - -namespace boost_has_concepts { - -concept C { } - -concept_map C { } - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_0x_hdr_array.ipp b/test/boost_no_0x_hdr_array.ipp index b61414b5..86609c8b 100644 --- a/test/boost_no_0x_hdr_array.ipp +++ b/test/boost_no_0x_hdr_array.ipp @@ -16,7 +16,8 @@ namespace boost_no_0x_hdr_array { int test() { - return 0; + std::array a = { 1, 2, 3 }; + return a.size() == 3 ? 0 : 1; } } diff --git a/test/boost_no_0x_hdr_chrono.ipp b/test/boost_no_0x_hdr_chrono.ipp index 0f54f114..dad06692 100644 --- a/test/boost_no_0x_hdr_chrono.ipp +++ b/test/boost_no_0x_hdr_chrono.ipp @@ -16,6 +16,15 @@ namespace boost_no_0x_hdr_chrono { int test() { + using std::chrono::nanoseconds; + using std::chrono::microseconds; + using std::chrono::milliseconds; + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + using std::chrono::system_clock; + using std::chrono::monotonic_clock; + using std::chrono::high_resolution_clock; return 0; } diff --git a/test/boost_no_0x_hdr_codecvt.ipp b/test/boost_no_0x_hdr_codecvt.ipp index e42cca6b..96d1ee17 100644 --- a/test/boost_no_0x_hdr_codecvt.ipp +++ b/test/boost_no_0x_hdr_codecvt.ipp @@ -16,6 +16,9 @@ namespace boost_no_0x_hdr_codecvt { int test() { + using std::codecvt_utf8; + using std::codecvt_utf16; + using std::codecvt_utf8_utf16; return 0; } diff --git a/test/boost_no_0x_hdr_concepts.ipp b/test/boost_no_0x_hdr_concepts.ipp deleted file mode 100644 index dceda408..00000000 --- a/test/boost_no_0x_hdr_concepts.ipp +++ /dev/null @@ -1,22 +0,0 @@ -// (C) Copyright Beman Dawes 2009 - -// 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_0X_HDR_CONCEPTS -// TITLE: C++0x header unavailable -// DESCRIPTION: The standard library does not supply C++0x header - -#include - -namespace boost_no_0x_hdr_concepts { - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_0x_hdr_condition_variable.ipp b/test/boost_no_0x_hdr_condition_variable.ipp index 585aa2cf..fc06a356 100644 --- a/test/boost_no_0x_hdr_condition_variable.ipp +++ b/test/boost_no_0x_hdr_condition_variable.ipp @@ -16,6 +16,8 @@ namespace boost_no_0x_hdr_condition_variable { int test() { + using std::condition_variable; + using std::condition_variable_any; return 0; } diff --git a/test/boost_no_0x_hdr_container_concepts.ipp b/test/boost_no_0x_hdr_container_concepts.ipp deleted file mode 100644 index af9d5103..00000000 --- a/test/boost_no_0x_hdr_container_concepts.ipp +++ /dev/null @@ -1,22 +0,0 @@ -// (C) Copyright Beman Dawes 2009 - -// 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_0X_HDR_CONTAINER_CONCEPTS -// TITLE: C++0x header unavailable -// DESCRIPTION: The standard library does not supply C++0x header - -#include - -namespace boost_no_0x_hdr_container_concepts { - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_0x_hdr_forward_list.ipp b/test/boost_no_0x_hdr_forward_list.ipp index 45d90fa6..59d16afb 100644 --- a/test/boost_no_0x_hdr_forward_list.ipp +++ b/test/boost_no_0x_hdr_forward_list.ipp @@ -16,7 +16,8 @@ namespace boost_no_0x_hdr_forward_list { int test() { - return 0; + std::forward_list l(2u, 2); + return *l.begin() == 2 ? 0 : 1; } } diff --git a/test/boost_no_0x_hdr_future.ipp b/test/boost_no_0x_hdr_future.ipp index 528509a8..42fd55e6 100644 --- a/test/boost_no_0x_hdr_future.ipp +++ b/test/boost_no_0x_hdr_future.ipp @@ -16,6 +16,19 @@ namespace boost_no_0x_hdr_future { int test() { + using std::is_error_code_enum; + using std::make_error_code; + using std::make_error_condition; + using std::future_category; + using std::future_error; + using std::promise; + using std::promise; + using std::promise; + using std::future; + using std::shared_future; + using std::atomic_future; + using std::packaged_task; // undefined + using std::async; return 0; } diff --git a/test/boost_no_0x_hdr_initializer_list.ipp b/test/boost_no_0x_hdr_initializer_list.ipp index 3e48cf47..c026ecbb 100644 --- a/test/boost_no_0x_hdr_initializer_list.ipp +++ b/test/boost_no_0x_hdr_initializer_list.ipp @@ -14,8 +14,13 @@ namespace boost_no_0x_hdr_initializer_list { +void foo(const std::initializer_list& l) +{ +} + int test() { + foo( { "a", "b", "c" } ); return 0; } diff --git a/test/boost_no_0x_hdr_iterator_concepts.ipp b/test/boost_no_0x_hdr_iterator_concepts.ipp deleted file mode 100644 index f0637333..00000000 --- a/test/boost_no_0x_hdr_iterator_concepts.ipp +++ /dev/null @@ -1,22 +0,0 @@ -// (C) Copyright Beman Dawes 2009 - -// 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_0X_HDR_ITERATOR_CONCEPTS -// TITLE: C++0x header unavailable -// DESCRIPTION: The standard library does not supply C++0x header - -#include - -namespace boost_no_0x_hdr_iterator_concepts { - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_0x_hdr_memory_concepts.ipp b/test/boost_no_0x_hdr_memory_concepts.ipp deleted file mode 100644 index fec1d7b0..00000000 --- a/test/boost_no_0x_hdr_memory_concepts.ipp +++ /dev/null @@ -1,22 +0,0 @@ -// (C) Copyright Beman Dawes 2009 - -// 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_0X_HDR_MEMORY_CONCEPTS -// TITLE: C++0x header unavailable -// DESCRIPTION: The standard library does not supply C++0x header - -#include - -namespace boost_no_0x_hdr_memory_concepts { - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_0x_hdr_mutex.ipp b/test/boost_no_0x_hdr_mutex.ipp index c1e7ec9c..d3a9d25b 100644 --- a/test/boost_no_0x_hdr_mutex.ipp +++ b/test/boost_no_0x_hdr_mutex.ipp @@ -16,6 +16,10 @@ namespace boost_no_0x_hdr_mutex { int test() { + using std::mutex; + using std::recursive_mutex; + using std::timed_mutex; + using std::recursive_timed_mutex; return 0; } diff --git a/test/boost_no_0x_hdr_random.ipp b/test/boost_no_0x_hdr_random.ipp index 956f24e2..07d58b5e 100644 --- a/test/boost_no_0x_hdr_random.ipp +++ b/test/boost_no_0x_hdr_random.ipp @@ -16,6 +16,15 @@ namespace boost_no_0x_hdr_random { int test() { + using std::minstd_rand0; + using std::mt19937; + using std::mt19937_64; + using std::ranlux24_base; + using std::ranlux48_base; + using std::ranlux24; + using std::ranlux48; + using std::knuth_b; + using std::default_random_engine; return 0; } diff --git a/test/boost_no_0x_hdr_ratio.ipp b/test/boost_no_0x_hdr_ratio.ipp index 8200b41a..beeab5b7 100644 --- a/test/boost_no_0x_hdr_ratio.ipp +++ b/test/boost_no_0x_hdr_ratio.ipp @@ -16,6 +16,21 @@ namespace boost_no_0x_hdr_ratio { int test() { + using std::atto; + using std::femto; + using std::pico; + using std::nano; + using std::micro; + using std::milli; + using std::centi; + using std::deci; + using std::deca; + using std::hecto; + using std::kilo; + using std::mega; + using std::tera; + using std::peta; + using std::exa; return 0; } diff --git a/test/boost_no_0x_hdr_regex.ipp b/test/boost_no_0x_hdr_regex.ipp index 1b40caf1..f82693e3 100644 --- a/test/boost_no_0x_hdr_regex.ipp +++ b/test/boost_no_0x_hdr_regex.ipp @@ -16,6 +16,8 @@ namespace boost_no_0x_hdr_regex { int test() { + using std::regex; + using std::wregex; return 0; } diff --git a/test/boost_no_0x_hdr_system_error.ipp b/test/boost_no_0x_hdr_system_error.ipp index a69912f3..158f7c1e 100644 --- a/test/boost_no_0x_hdr_system_error.ipp +++ b/test/boost_no_0x_hdr_system_error.ipp @@ -16,6 +16,10 @@ namespace boost_no_0x_hdr_system_error { int test() { + using std::error_category; + using std::error_code; + using std::error_condition; + using std::system_error; return 0; } diff --git a/test/boost_no_0x_hdr_thread.ipp b/test/boost_no_0x_hdr_thread.ipp index a6dfa057..c07b03e4 100644 --- a/test/boost_no_0x_hdr_thread.ipp +++ b/test/boost_no_0x_hdr_thread.ipp @@ -16,6 +16,11 @@ namespace boost_no_0x_hdr_thread { int test() { + using std::thread; + using std::this_thread::get_id; + using std::this_thread::yield; + using std::this_thread::sleep_until; + using std::this_thread::sleep_for; return 0; } diff --git a/test/boost_no_0x_hdr_type_traits.ipp b/test/boost_no_0x_hdr_type_traits.ipp index 9993804a..44dc6a6f 100644 --- a/test/boost_no_0x_hdr_type_traits.ipp +++ b/test/boost_no_0x_hdr_type_traits.ipp @@ -16,6 +16,90 @@ namespace boost_no_0x_hdr_type_traits { int test() { + using std::integral_constant; + using std::true_type; + using std::false_type; + using std::is_void; + using std::is_integral; + using std::is_floating_point; + using std::is_array; + using std::is_pointer; + using std::is_lvalue_reference; + using std::is_rvalue_reference; + using std::is_member_object_pointer; + using std::is_member_function_pointer; + using std::is_enum; + using std::is_union; + using std::is_class; + using std::is_function; + using std::is_reference; + using std::is_arithmetic; + using std::is_fundamental; + using std::is_object; + using std::is_scalar; + using std::is_compound; + using std::is_member_pointer; + using std::is_const; + using std::is_volatile; + using std::is_trivial; + using std::is_trivially_copyable; + using std::is_standard_layout; + using std::is_pod; + using std::is_literal_type; + using std::is_empty; + using std::is_polymorphic; + using std::is_abstract; + using std::is_constructible; + using std::is_nothrow_constructible; + using std::has_default_constructor; + using std::has_copy_constructor; + using std::has_copy_assign; + using std::has_move_constructor; + using std::has_move_assign; + using std::has_trivial_default_constructor; + using std::has_trivial_copy_constructor; + using std::has_trivial_move_constructor; + using std::has_trivial_copy_assign; + using std::has_trivial_move_assign; + using std::has_trivial_destructor; + using std::has_nothrow_default_constructor; + using std::has_nothrow_copy_constructor; + using std::has_nothrow_move_constructor; + using std::has_nothrow_copy_assign; + using std::has_nothrow_move_assign; + using std::has_virtual_destructor; + using std::is_signed; + using std::is_unsigned; + using std::alignment_of; + using std::rank; + using std::extent; + using std::is_same; + using std::is_base_of; + using std::is_convertible; + using std::is_explicitly_convertible; + using std::remove_const; + using std::remove_volatile; + using std::remove_cv; + using std::add_const; + using std::add_volatile; + using std::add_cv; + using std::remove_reference; + using std::add_lvalue_reference; + using std::add_rvalue_reference; + using std::make_signed; + using std::make_unsigned; + using std::remove_extent; + using std::remove_all_extents; + using std::remove_pointer; + using std::add_pointer; + using std::aligned_storage; + using std::aligned_union; + using std::decay; + using std::enable_if; + using std::conditional; + using std::common_type; + using std::underlying_type; + using std::result_of; return 0; } diff --git a/test/boost_no_0x_hdr_unordered_map.ipp b/test/boost_no_0x_hdr_unordered_map.ipp index 5377535b..3d44a1c5 100644 --- a/test/boost_no_0x_hdr_unordered_map.ipp +++ b/test/boost_no_0x_hdr_unordered_map.ipp @@ -16,7 +16,9 @@ namespace boost_no_0x_hdr_unordered_map { int test() { - return 0; + std::unordered_map s1; + std::unordered_multimap s2; + return s1.empty() && s2.empty() ? 0 : 1; } } diff --git a/test/boost_no_0x_hdr_unordered_set.ipp b/test/boost_no_0x_hdr_unordered_set.ipp index 2bf6cd95..f72f1b6a 100644 --- a/test/boost_no_0x_hdr_unordered_set.ipp +++ b/test/boost_no_0x_hdr_unordered_set.ipp @@ -16,7 +16,9 @@ namespace boost_no_0x_hdr_unordered_set { int test() { - return 0; + std::unordered_set s1; + std::unordered_multiset s2; + return s1.empty() && s2.empty() ? 0 : 1; } } diff --git a/test/boost_no_concepts.ipp b/test/boost_no_concepts.ipp deleted file mode 100644 index d5202b0d..00000000 --- a/test/boost_no_concepts.ipp +++ /dev/null @@ -1,22 +0,0 @@ -// (C) Copyright Beman Dawes 2009 - -// 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_CONCEPTS -// TITLE: C++0x concepts feature unavailable -// DESCRIPTION: The compiler does not support the C++0x concepts feature - -namespace boost_no_concepts { - -concept Foo { } - -int test() -{ - return 0; -} - -} diff --git a/test/boost_no_constexpr.ipp b/test/boost_no_constexpr.ipp index 4ab80a02..0143f55c 100644 --- a/test/boost_no_constexpr.ipp +++ b/test/boost_no_constexpr.ipp @@ -14,6 +14,26 @@ namespace boost_no_constexpr { constexpr int square(int x) { return x * x; } // from N2235 +// from 5.19: +constexpr const int* addr(const int& ir) { return &ir; } +static const int x = 5; +constexpr const int* xp = addr(x); + +struct A +{ + constexpr A(int i) : val(i) { } + constexpr operator int() { return val; } + constexpr operator long() { return 43; } +private: + int val; +}; + +template struct X { }; + +constexpr A a = 42; + +X x; // OK: unique conversion to int + int test() { int i = square(5); diff --git a/test/boost_no_initializer_lists.ipp b/test/boost_no_initializer_lists.ipp index 4bc96a28..22897e1e 100644 --- a/test/boost_no_initializer_lists.ipp +++ b/test/boost_no_initializer_lists.ipp @@ -12,6 +12,7 @@ #include #include +#include namespace boost_no_initializer_lists { diff --git a/test/boost_no_scoped_enums.ipp b/test/boost_no_scoped_enums.ipp index 1396da18..8b6a4a66 100644 --- a/test/boost_no_scoped_enums.ipp +++ b/test/boost_no_scoped_enums.ipp @@ -15,7 +15,14 @@ namespace boost_no_scoped_enums { int test() { enum class scoped_enum { yes, no, maybe }; - return 0; + // This tests bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 + bool b = (scoped_enum::yes == scoped_enum::yes) + && (scoped_enum::yes != scoped_enum::no) + && (scoped_enum::yes < scoped_enum::no) + && (scoped_enum::yes <= scoped_enum::no) + && (scoped_enum::no > scoped_enum::yes) + && (scoped_enum::no >= scoped_enum::yes); + return b ? 0 : 1; } } diff --git a/test/config_info.cpp b/test/config_info.cpp index 762e6c56..1abe8d8c 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -914,7 +914,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL); PRINT_MACRO(BOOST_HAS_BETHREADS); PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME); - PRINT_MACRO(BOOST_HAS_CONCEPTS); PRINT_MACRO(BOOST_HAS_DIRENT_H); PRINT_MACRO(BOOST_HAS_EXPM1); PRINT_MACRO(BOOST_HAS_FTIME); @@ -966,14 +965,10 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_0X_HDR_ARRAY); PRINT_MACRO(BOOST_NO_0X_HDR_CHRONO); PRINT_MACRO(BOOST_NO_0X_HDR_CODECVT); - PRINT_MACRO(BOOST_NO_0X_HDR_CONCEPTS); PRINT_MACRO(BOOST_NO_0X_HDR_CONDITION_VARIABLE); - PRINT_MACRO(BOOST_NO_0X_HDR_CONTAINER_CONCEPTS); PRINT_MACRO(BOOST_NO_0X_HDR_FORWARD_LIST); PRINT_MACRO(BOOST_NO_0X_HDR_FUTURE); PRINT_MACRO(BOOST_NO_0X_HDR_INITIALIZER_LIST); - PRINT_MACRO(BOOST_NO_0X_HDR_ITERATOR_CONCEPTS); - PRINT_MACRO(BOOST_NO_0X_HDR_MEMORY_CONCEPTS); PRINT_MACRO(BOOST_NO_0X_HDR_MUTEX); PRINT_MACRO(BOOST_NO_0X_HDR_RANDOM); PRINT_MACRO(BOOST_NO_0X_HDR_RATIO); @@ -994,7 +989,6 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CHAR16_T); PRINT_MACRO(BOOST_NO_CHAR32_T); PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION); - PRINT_MACRO(BOOST_NO_CONCEPTS); PRINT_MACRO(BOOST_NO_CONSTEXPR); PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS); PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS); @@ -1011,6 +1005,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS); PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS); PRINT_MACRO(BOOST_NO_EXTERN_TEMPLATE); + PRINT_MACRO(BOOST_NO_FENV_H); PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING); PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS); @@ -1078,6 +1073,8 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_VARIADIC_TEMPLATES); 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 90d13fd2..2a83e6d6 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Sat Sep 25 16:53:42 2010 +// This file was automatically generated on Tue Mar 15 12:25:21 2011 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -37,21 +37,11 @@ namespace boost_no_0x_hdr_chrono = empty_boost; #else namespace boost_no_0x_hdr_codecvt = empty_boost; #endif -#ifndef BOOST_NO_0X_HDR_CONCEPTS -#include "boost_no_0x_hdr_concepts.ipp" -#else -namespace boost_no_0x_hdr_concepts = empty_boost; -#endif #ifndef BOOST_NO_0X_HDR_CONDITION_VARIABLE #include "boost_no_0x_hdr_condition_variable.ipp" #else namespace boost_no_0x_hdr_condition_variable = empty_boost; #endif -#ifndef BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -#include "boost_no_0x_hdr_container_concepts.ipp" -#else -namespace boost_no_0x_hdr_container_concepts = empty_boost; -#endif #ifndef BOOST_NO_0X_HDR_FORWARD_LIST #include "boost_no_0x_hdr_forward_list.ipp" #else @@ -67,16 +57,6 @@ namespace boost_no_0x_hdr_future = empty_boost; #else namespace boost_no_0x_hdr_initializer_list = empty_boost; #endif -#ifndef BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -#include "boost_no_0x_hdr_iterator_concepts.ipp" -#else -namespace boost_no_0x_hdr_iterator_concepts = empty_boost; -#endif -#ifndef BOOST_NO_0X_HDR_MEMORY_CONCEPTS -#include "boost_no_0x_hdr_memory_concepts.ipp" -#else -namespace boost_no_0x_hdr_memory_concepts = empty_boost; -#endif #ifndef BOOST_NO_0X_HDR_MUTEX #include "boost_no_0x_hdr_mutex.ipp" #else @@ -182,11 +162,6 @@ namespace boost_no_char32_t = empty_boost; #else namespace boost_no_complete_value_initialization = empty_boost; #endif -#ifndef BOOST_NO_CONCEPTS -#include "boost_no_concepts.ipp" -#else -namespace boost_no_concepts = empty_boost; -#endif #ifndef BOOST_NO_CONSTEXPR #include "boost_no_constexpr.ipp" #else @@ -272,6 +247,11 @@ namespace boost_no_explicit_function_template_arguments = empty_boost; #else namespace boost_no_extern_template = empty_boost; #endif +#ifndef BOOST_NO_FENV_H +#include "boost_no_fenv_h.ipp" +#else +namespace boost_no_fenv_h = empty_boost; +#endif #ifndef BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS #include "boost_no_function_template_default_args.ipp" #else @@ -623,11 +603,6 @@ namespace boost_has_bethreads = empty_boost; #else namespace boost_has_clock_gettime = empty_boost; #endif -#ifdef BOOST_HAS_CONCEPTS -#include "boost_has_concepts.ipp" -#else -namespace boost_has_concepts = empty_boost; -#endif #ifdef BOOST_HAS_DIRENT_H #include "boost_has_dirent_h.ipp" #else @@ -881,11 +856,6 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_HAS_CLOCK_GETTIME at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_has_concepts::test()) - { - std::cerr << "Failed test for BOOST_HAS_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_has_dirent_h::test()) { std::cerr << "Failed test for BOOST_HAS_DIRENT_H at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1136,21 +1106,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_0X_HDR_CODECVT at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_0x_hdr_concepts::test()) - { - std::cerr << "Failed test for BOOST_NO_0X_HDR_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_no_0x_hdr_condition_variable::test()) { std::cerr << "Failed test for BOOST_NO_0X_HDR_CONDITION_VARIABLE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_0x_hdr_container_concepts::test()) - { - std::cerr << "Failed test for BOOST_NO_0X_HDR_CONTAINER_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_no_0x_hdr_forward_list::test()) { std::cerr << "Failed test for BOOST_NO_0X_HDR_FORWARD_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1166,16 +1126,6 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_0X_HDR_INITIALIZER_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_0x_hdr_iterator_concepts::test()) - { - std::cerr << "Failed test for BOOST_NO_0X_HDR_ITERATOR_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } - if(0 != boost_no_0x_hdr_memory_concepts::test()) - { - std::cerr << "Failed test for BOOST_NO_0X_HDR_MEMORY_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_no_0x_hdr_mutex::test()) { std::cerr << "Failed test for BOOST_NO_0X_HDR_MUTEX at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1281,11 +1231,6 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } - if(0 != boost_no_concepts::test()) - { - std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl; - ++error_count; - } if(0 != boost_no_constexpr::test()) { std::cerr << "Failed test for BOOST_NO_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl; @@ -1371,6 +1316,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_EXTERN_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_fenv_h::test()) + { + std::cerr << "Failed test for BOOST_NO_FENV_H at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_function_template_default_args::test()) { std::cerr << "Failed test for BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/has_concepts_fail.cpp b/test/has_concepts_fail.cpp deleted file mode 100644 index d864f8f4..00000000 --- a/test/has_concepts_fail.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// This file was automatically generated on Sat Aug 25 12:32:20 2007 -// 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. - -// Test file for macro BOOST_HAS_CONCEPTS -// This file should not compile, if it does then -// BOOST_HAS_CONCEPTS should be defined. -// See file boost_has_concepts.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_HAS_CONCEPTS -#include "boost_has_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_has_concepts::test(); -} - diff --git a/test/has_concepts_pass.cpp b/test/has_concepts_pass.cpp deleted file mode 100644 index 1883693d..00000000 --- a/test/has_concepts_pass.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// This file was automatically generated on Sat Aug 25 12:32:20 2007 -// 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. - -// Test file for macro BOOST_HAS_CONCEPTS -// This file should compile, if it does not then -// BOOST_HAS_CONCEPTS should not be defined. -// See file boost_has_concepts.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_HAS_CONCEPTS -#include "boost_has_concepts.ipp" -#else -namespace boost_has_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_has_concepts::test(); -} - diff --git a/test/no_0x_hdr_concepts_fail.cpp b/test/no_0x_hdr_concepts_fail.cpp deleted file mode 100644 index d9572a19..00000000 --- a/test/no_0x_hdr_concepts_fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_CONCEPTS -// This file should not compile, if it does then -// BOOST_NO_0X_HDR_CONCEPTS should not be defined. -// See file boost_no_0x_hdr_concepts.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_0X_HDR_CONCEPTS -#include "boost_no_0x_hdr_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_concepts::test(); -} - diff --git a/test/no_0x_hdr_concepts_pass.cpp b/test/no_0x_hdr_concepts_pass.cpp deleted file mode 100644 index 335043bf..00000000 --- a/test/no_0x_hdr_concepts_pass.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_CONCEPTS -// This file should compile, if it does not then -// BOOST_NO_0X_HDR_CONCEPTS should be defined. -// See file boost_no_0x_hdr_concepts.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_0X_HDR_CONCEPTS -#include "boost_no_0x_hdr_concepts.ipp" -#else -namespace boost_no_0x_hdr_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_concepts::test(); -} - diff --git a/test/no_0x_hdr_container_concepts_fail.cpp b/test/no_0x_hdr_container_concepts_fail.cpp deleted file mode 100644 index e5eb9a08..00000000 --- a/test/no_0x_hdr_container_concepts_fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_CONTAINER_CONCEPTS -// This file should not compile, if it does then -// BOOST_NO_0X_HDR_CONTAINER_CONCEPTS should not be defined. -// See file boost_no_0x_hdr_container_concepts.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_0X_HDR_CONTAINER_CONCEPTS -#include "boost_no_0x_hdr_container_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_container_concepts::test(); -} - diff --git a/test/no_0x_hdr_container_concepts_pass.cpp b/test/no_0x_hdr_container_concepts_pass.cpp deleted file mode 100644 index e2e4fc97..00000000 --- a/test/no_0x_hdr_container_concepts_pass.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_CONTAINER_CONCEPTS -// This file should compile, if it does not then -// BOOST_NO_0X_HDR_CONTAINER_CONCEPTS should be defined. -// See file boost_no_0x_hdr_container_concepts.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_0X_HDR_CONTAINER_CONCEPTS -#include "boost_no_0x_hdr_container_concepts.ipp" -#else -namespace boost_no_0x_hdr_container_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_container_concepts::test(); -} - diff --git a/test/no_0x_hdr_iterator_concepts_fail.cpp b/test/no_0x_hdr_iterator_concepts_fail.cpp deleted file mode 100644 index 728a31c4..00000000 --- a/test/no_0x_hdr_iterator_concepts_fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_ITERATOR_CONCEPTS -// This file should not compile, if it does then -// BOOST_NO_0X_HDR_ITERATOR_CONCEPTS should not be defined. -// See file boost_no_0x_hdr_iterator_concepts.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_0X_HDR_ITERATOR_CONCEPTS -#include "boost_no_0x_hdr_iterator_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_iterator_concepts::test(); -} - diff --git a/test/no_0x_hdr_iterator_concepts_pass.cpp b/test/no_0x_hdr_iterator_concepts_pass.cpp deleted file mode 100644 index 77d8d20d..00000000 --- a/test/no_0x_hdr_iterator_concepts_pass.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_ITERATOR_CONCEPTS -// This file should compile, if it does not then -// BOOST_NO_0X_HDR_ITERATOR_CONCEPTS should be defined. -// See file boost_no_0x_hdr_iterator_concepts.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_0X_HDR_ITERATOR_CONCEPTS -#include "boost_no_0x_hdr_iterator_concepts.ipp" -#else -namespace boost_no_0x_hdr_iterator_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_iterator_concepts::test(); -} - diff --git a/test/no_0x_hdr_memory_concepts_fail.cpp b/test/no_0x_hdr_memory_concepts_fail.cpp deleted file mode 100644 index aef47c02..00000000 --- a/test/no_0x_hdr_memory_concepts_fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_MEMORY_CONCEPTS -// This file should not compile, if it does then -// BOOST_NO_0X_HDR_MEMORY_CONCEPTS should not be defined. -// See file boost_no_0x_hdr_memory_concepts.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_0X_HDR_MEMORY_CONCEPTS -#include "boost_no_0x_hdr_memory_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_memory_concepts::test(); -} - diff --git a/test/no_0x_hdr_memory_concepts_pass.cpp b/test/no_0x_hdr_memory_concepts_pass.cpp deleted file mode 100644 index 516b50ed..00000000 --- a/test/no_0x_hdr_memory_concepts_pass.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_0X_HDR_MEMORY_CONCEPTS -// This file should compile, if it does not then -// BOOST_NO_0X_HDR_MEMORY_CONCEPTS should be defined. -// See file boost_no_0x_hdr_memory_concepts.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_0X_HDR_MEMORY_CONCEPTS -#include "boost_no_0x_hdr_memory_concepts.ipp" -#else -namespace boost_no_0x_hdr_memory_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_0x_hdr_memory_concepts::test(); -} - diff --git a/test/no_concepts_fail.cpp b/test/no_concepts_fail.cpp deleted file mode 100644 index 6478e187..00000000 --- a/test/no_concepts_fail.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_CONCEPTS -// This file should not compile, if it does then -// BOOST_NO_CONCEPTS should not be defined. -// See file boost_no_concepts.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_CONCEPTS -#include "boost_no_concepts.ipp" -#else -#error "this file should not compile" -#endif - -int main( int, char *[] ) -{ - return boost_no_concepts::test(); -} - diff --git a/test/no_concepts_pass.cpp b/test/no_concepts_pass.cpp deleted file mode 100644 index ad36d9c2..00000000 --- a/test/no_concepts_pass.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// This file was automatically generated on Fri May 15 11:57:42 2009 -// 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_CONCEPTS -// This file should compile, if it does not then -// BOOST_NO_CONCEPTS should be defined. -// See file boost_no_concepts.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_CONCEPTS -#include "boost_no_concepts.ipp" -#else -namespace boost_no_concepts = empty_boost; -#endif - -int main( int, char *[] ) -{ - return boost_no_concepts::test(); -} - diff --git a/tools/generate.cpp b/tools/generate.cpp index 87adc55c..c9a0b0d4 100644 --- a/tools/generate.cpp +++ b/tools/generate.cpp @@ -124,7 +124,7 @@ void write_test_file(const fs::path& file, { if(!fs::exists(file)) { - std::cout << "Writing test file " << file.native_directory_string() << std::endl; + std::cout << "Writing test file " << file.string() << std::endl; fs::ofstream ofs(file); std::time_t t = std::time(0); @@ -180,13 +180,13 @@ void write_test_file(const fs::path& file, } else { - std::cout << "Skipping existing test file " << file.native_directory_string() << std::endl; + std::cout << "Skipping existing test file " << file.string() << std::endl; } } void process_ipp_file(const fs::path& file, bool positive_test) { - std::cout << "Info: Scanning file: " << file.native_directory_string() << std::endl; + std::cout << "Info: Scanning file: " << file.string() << std::endl; // our variables: std::string file_text; @@ -210,7 +210,7 @@ void process_ipp_file(const fs::path& file, bool positive_test) } if(macro_name.empty()) { - std::cout << "Error: no macro definition found in " << file.native_directory_string(); + std::cout << "Error: no macro definition found in " << file.string(); } else { @@ -219,10 +219,10 @@ void process_ipp_file(const fs::path& file, bool positive_test) // get the output filesnames: boost::regex file_regex("boost_([^.]+)\\.ipp"); - positive_file = file.branch_path() / boost::regex_replace(file.leaf(), file_regex, "$1_pass.cpp"); - negative_file = file.branch_path() / boost::regex_replace(file.leaf(), file_regex, "$1_fail.cpp"); - write_test_file(positive_file, macro_name, namespace_name, file.leaf(), positive_test, true); - write_test_file(negative_file, macro_name, namespace_name, file.leaf(), positive_test, false); + positive_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_pass.cpp"); + negative_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_fail.cpp"); + write_test_file(positive_file, macro_name, namespace_name, file.leaf().string(), positive_test, true); + write_test_file(negative_file, macro_name, namespace_name, file.leaf().string(), positive_test, false); // always create config_test data, // positive and negative tests go to separate streams, because for some @@ -232,7 +232,7 @@ void process_ipp_file(const fs::path& file, bool positive_test) if(!positive_test) *pout << "n"; *pout << "def " << macro_name - << "\n#include \"" << file.leaf() << "\"\n#else\nnamespace " + << "\n#include \"" << file.leaf().string() << "\"\n#else\nnamespace " << namespace_name << " = empty_boost;\n#endif\n"; config_test2 << " if(0 != " << namespace_name << "::test())\n" @@ -243,12 +243,12 @@ void process_ipp_file(const fs::path& file, bool positive_test) // always generate the jamfile data: jamfile << "test-suite \"" << macro_name << "\" : \n" - "[ run " << positive_file.leaf() << "