summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/config/test/boost_no_part_spec_def_args.ipp
diff options
context:
space:
mode:
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.ipp46
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;
+}
+
+}
+