diff options
Diffstat (limited to 'src/boost/libs/config/test/boost_no_part_spec_def_args.ipp')
-rw-r--r-- | src/boost/libs/config/test/boost_no_part_spec_def_args.ipp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/boost/libs/config/test/boost_no_part_spec_def_args.ipp b/src/boost/libs/config/test/boost_no_part_spec_def_args.ipp new file mode 100644 index 000000000..91ef53768 --- /dev/null +++ b/src/boost/libs/config/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 <class T> +struct one +{ +}; + +template <class T1, class T2 = void> +struct tag +{ +}; + +template <class T1> +struct tag<one<T1> > +{ +}; + +template <class T> +void consume_variable(T const&){} + +int test() +{ + tag<int> t1; + consume_variable(t1); + tag<one<int> > t2; + consume_variable(t2); + tag<int, double> t3; + consume_variable(t3); + tag<one<int>, double> t4; + consume_variable(t4); + return 0; +} + +} + |