summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/explicit78.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.pt/explicit78.C28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C b/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C
new file mode 100644
index 000000000..34e4c758f
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/explicit78.C
@@ -0,0 +1,28 @@
+// { dg-do assemble }
+
+template <int I>
+struct A {
+};
+
+template <int I, int J>
+struct B {
+ operator A<3> ();
+ operator B<3, 7> ();
+};
+
+
+template <int I, int J>
+void f(B<I, J>);
+
+template <int I>
+void f(A<I>)
+{
+}
+
+int main()
+{
+ // Deduction fails with the first `f'. Since `3' is explicitly
+ // specified, we don't try any deduction with the second `f'. So,
+ // we call the second `f'.
+ f<3>(B<2, 7>());
+}