From 3d32b20f45c9081dba722675271d97bf2590abdb Mon Sep 17 00:00:00 2001 From: John Maddock Date: Fri, 9 Oct 2009 16:16:02 +0000 Subject: [PATCH] Merge interlinked changes in config, type_traits and TR1 libraries. [SVN r56678] --- 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 | 14 +++- include/boost/config/compiler/borland.hpp | 17 ++--- include/boost/config/compiler/codegear.hpp | 7 +- include/boost/config/compiler/common_edg.hpp | 2 + include/boost/config/compiler/digitalmars.hpp | 1 + include/boost/config/compiler/gcc.hpp | 30 ++++++-- include/boost/config/compiler/hp_acc.hpp | 2 + include/boost/config/compiler/intel.hpp | 4 +- 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 | 8 +++ include/boost/config/stdlib/dinkumware.hpp | 6 +- test/Jamfile.v2 | 2 +- test/all/Jamfile.v2 | 8 ++- test/boost_no_deleted_functions.ipp | 6 +- ...oost_no_function_template_default_args.ipp | 38 +++++++++++ test/boost_no_sfinae_expr.ipp | 37 ++++++++++ test/config_info.cpp | 6 ++ 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 ++++++++++ 31 files changed, 409 insertions(+), 47 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/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 8482cd78..11493abf 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. ]] @@ -785,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 diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index 16a70687..91f064c6 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,29 @@ # 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 +# define BOOST_SP_NO_SP_CONVERTIBLE // 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 // @@ -169,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 @@ -235,7 +236,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 diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index c3293244..3915cd54 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 @@ -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 @@ -80,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 94653c89..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 @@ -104,14 +107,10 @@ // 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 #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 @@ -126,6 +125,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 @@ -152,6 +152,24 @@ # 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__) +// 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 +// +#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__ @@ -172,8 +190,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/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) 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..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 @@ -168,10 +174,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/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 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" ; } } 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_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; 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..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() @@ -1000,6 +1002,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 +1034,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 +1077,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(); +} +