diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index b2104e94..b02bda6a 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -23,14 +23,14 @@

-Acknowledgements +Acknowledgements

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..98fa61b5 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 @@

-Boost Macro Reference +Boost Macro Reference

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

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

@@ -2334,6 +2334,19 @@   + +

+ BOOST_NO_INITIALIZER_LISTS +

+ + +

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

+ +  + +

BOOST_NO_LONG_LONG @@ -2425,7 +2438,7 @@

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

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

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

@@ -3032,7 +3045,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..2e16141f 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 499cac66..cdd610f0 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 71219b45..58b2310d 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: October 27, 2008 at 16:15:55 GMT

Last revised: January 03, 2009 at 22:54:59 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 90b6659c..fc98548e 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -547,6 +547,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 187591be..e57f75cf 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -88,6 +88,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(); +} +