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(); +} +