summaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-16 06:08:49 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2006-06-16 06:08:49 +0000
commita0ae7f4b2a6c294725d00c7e57272d13aa4c1a9c (patch)
tree2cd5e1744fea5e85f23366a250ecce719577ca85 /gcc/testsuite
parenta82a45defc7b2f1f5e1658d79f721b1cad5fa728 (diff)
downloadgcc-a0ae7f4b2a6c294725d00c7e57272d13aa4c1a9c.tar.gz
PR c++/27689
* cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New macro. * pt.c (unify): Use it. PR c++/27689 * g++.dg/template/ttp18.C: New test. * g++.dg/template/ttp19.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114703 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/template/ttp18.C10
-rw-r--r--gcc/testsuite/g++.dg/template/ttp19.C7
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0696d9a6a58..313a39f1585 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2006-06-15 Mark Mitchell <mark@codesourcery.com>
+ PR c++/27689
+ * g++.dg/template/ttp18.C: New test.
+ * g++.dg/template/ttp19.C: Likewise.
+
PR c++/27666
* g++.dg/expr/cond9.C: New test.
diff --git a/gcc/testsuite/g++.dg/template/ttp18.C b/gcc/testsuite/g++.dg/template/ttp18.C
new file mode 100644
index 00000000000..095c07fb927
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp18.C
@@ -0,0 +1,10 @@
+template <template <typename> class T>
+void f(T<int>) {}
+
+template <typename T>
+union U {};
+
+void g() {
+ f(U<int>());
+}
+
diff --git a/gcc/testsuite/g++.dg/template/ttp19.C b/gcc/testsuite/g++.dg/template/ttp19.C
new file mode 100644
index 00000000000..12a37c9cd59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ttp19.C
@@ -0,0 +1,7 @@
+// PR c++/27689
+
+void f (...);
+template <template <typename> class F, typename T> void f (F<T>);
+template <typename> struct foo { struct bar {}; };
+void g (foo<int>::bar x) { f(x); }
+