OSDN Git Service

PR c++/9420
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Mar 2003 07:10:43 +0000 (07:10 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Mar 2003 07:10:43 +0000 (07:10 +0000)
        * search.c (lookup_conversions): Call complete_type here.
        * call.c (implicit_conversion): Not here.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64649 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/g++.dg/template/overload1.C [new file with mode: 0644]

diff --git a/gcc/testsuite/g++.dg/template/overload1.C b/gcc/testsuite/g++.dg/template/overload1.C
new file mode 100644 (file)
index 0000000..404fc2d
--- /dev/null
@@ -0,0 +1,23 @@
+// PR c++/9420
+// Bug: We were instantiating B<int> during overload resolution for E<0.
+// This is wrong; the contents of B<int> are not relevant, since we can't
+// use its constructors (because we'd already be using a constructor for
+// C).
+
+enum { E };
+
+template <typename T> struct A {
+  static const int a = (E < 0);
+};
+
+template <typename T> class B {
+  A<int> b;
+};
+
+struct C {
+  C(B<int>);
+};
+
+int operator<(C, C);
+
+A<int> c;