From b4eaf1eb504f844c1b6fc60b30213f4f2ef1dbc1 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Mon, 21 Apr 2008 12:06:02 +0000 Subject: [PATCH] Changed macro BOOST_PARTIAL_SPECIALIZATION_EXPLICIT_ARGS to BOOST_NO_PARTIAL_SPECIALIZATION_DEFAULT_ARGS. Changed to in order to prevent cyclic dependencies between Fusion Tuples and TR1. [SVN r44692] --- .../boost_config/boost_macro_reference.html | 18 ++++++++++++++++++ doc/html/index.html | 2 +- doc/macro_reference.qbk | 4 ++++ include/boost/config/compiler/vacpp.hpp | 2 +- include/boost/config/suffix.hpp | 9 +++++++++ test/all/Jamfile.v2 | 5 ++++- test/config_info.cpp | 4 ++++ test/config_test.cpp | 12 +++++++++++- 8 files changed, 52 insertions(+), 4 deletions(-) diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 79912034..4e6d4bf1 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -668,6 +668,24 @@ + +

+ BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +

+ + +

+ Compiler +

+ + +

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

+ + +

BOOST_NO_POINTER_TO_MEMBER_CONST diff --git a/doc/html/index.html b/doc/html/index.html index 0cfcd61f..9b92a6dc 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -960,7 +960,7 @@

- +

Last revised: April 21, 2008 at 09:16:51 GMT

Last revised: April 21, 2008 at 11:41:47 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 6d43971c..f37303ba 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -176,6 +176,10 @@ 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`][Compiler][ +The compiler does not correctly handle partial specializations +which depend upon default arguments in the primary template. +]] [[`BOOST_NO_POINTER_TO_MEMBER_CONST`][Compiler][ The compiler does not correctly handle pointers to const member functions, preventing use of these in overloaded function templates. See diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index 11710156..826939f1 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -53,7 +53,7 @@ #endif // Some versions of the compiler have issues with default arguments on partial specializations -#define BOOST_PARTIAL_SPECIALIZATION_EXPLICT_ARGS +#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index c0cdf71b..2e72b3f5 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -120,6 +120,15 @@ # define BOOST_NO_STD_ITERATOR_TRAITS # endif +// +// Without partial specialization, partial +// specialization with default args won't work either: +// +# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ + && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS) +# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +# endif + // // Without member template support, we can't have template constructors // in the standard library either: diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index e7dc80db..4ed0b926 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 Apr 21 10:10:52 2008 +# This file was automatically generated on Mon Apr 21 12:40:41 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -280,6 +280,9 @@ test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" : test-suite "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION" : [ run ../no_partial_spec_pass.cpp ] [ compile-fail ../no_partial_spec_fail.cpp ] ; +test-suite "BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS" : +[ run ../no_part_spec_def_args_pass.cpp ] +[ compile-fail ../no_part_spec_def_args_fail.cpp ] ; test-suite "BOOST_NO_PRIVATE_IN_AGGREGATE" : [ run ../no_priv_aggregate_pass.cpp ] [ compile-fail ../no_priv_aggregate_fail.cpp ] ; diff --git a/test/config_info.cpp b/test/config_info.cpp index 89973731..4bedf417 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -983,6 +983,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD); PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS); PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE); + PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); @@ -1029,6 +1030,9 @@ void print_boost_macros() + + + // END GENERATED BLOCK diff --git a/test/config_test.cpp b/test/config_test.cpp index b8265235..b9a477b6 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Apr 21 10:10:52 2008 +// This file was automatically generated on Mon Apr 21 12:40:41 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -197,6 +197,11 @@ namespace boost_no_operators_in_namespace = empty_boost; #else namespace boost_no_template_partial_specialization = empty_boost; #endif +#ifndef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#include "boost_no_part_spec_def_args.ipp" +#else +namespace boost_no_partial_specialization_implicit_default_args = empty_boost; +#endif #ifndef BOOST_NO_PRIVATE_IN_AGGREGATE #include "boost_no_priv_aggregate.ipp" #else @@ -1026,6 +1031,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_partial_specialization_implicit_default_args::test()) + { + std::cerr << "Failed test for BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_private_in_aggregate::test()) { std::cerr << "Failed test for BOOST_NO_PRIVATE_IN_AGGREGATE at: " << __FILE__ << ":" << __LINE__ << std::endl;