diff --git a/test/boost_no_part_spec_def_args.ipp b/test/boost_no_part_spec_def_args.ipp new file mode 100644 index 00000000..91ef5376 --- /dev/null +++ b/test/boost_no_part_spec_def_args.ipp @@ -0,0 +1,46 @@ +// (C) Copyright John Maddock 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_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// TITLE: Default arguments in partial specialization +// DESCRIPTION: The compiler chokes if a partial specialization relies on default arguments in the primary template. + +namespace boost_no_partial_specialization_implicit_default_args{ + +template +struct one +{ +}; + +template +struct tag +{ +}; + +template +struct tag > +{ +}; + +template +void consume_variable(T const&){} + +int test() +{ + tag t1; + consume_variable(t1); + tag > t2; + consume_variable(t2); + tag t3; + consume_variable(t3); + tag, double> t4; + consume_variable(t4); + return 0; +} + +} + diff --git a/test/no_part_spec_def_args_fail.cpp b/test/no_part_spec_def_args_fail.cpp new file mode 100644 index 00000000..68f34d27 --- /dev/null +++ b/test/no_part_spec_def_args_fail.cpp @@ -0,0 +1,37 @@ +// 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 +// 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: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// This file should not compile, if it does then +// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should not be defined. +// See file boost_no_part_spec_def_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_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +#include "boost_no_part_spec_def_args.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_partial_specialization_implicit_default_args::test(); +} + diff --git a/test/no_part_spec_def_args_pass.cpp b/test/no_part_spec_def_args_pass.cpp new file mode 100644 index 00000000..06864228 --- /dev/null +++ b/test/no_part_spec_def_args_pass.cpp @@ -0,0 +1,37 @@ +// 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 +// 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: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $ +// + + +// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +// This file should compile, if it does not then +// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should be defined. +// See file boost_no_part_spec_def_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_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 + +int main( int, char *[] ) +{ + return boost_no_partial_specialization_implicit_default_args::test(); +} +