From 17114cb4a309584bc0b08a1e95413545b2a47f05 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 2 Aug 2009 14:00:59 +0000 Subject: [PATCH] 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(); +} +