diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2003-03-21 02:10:43 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2003-03-21 02:10:43 -0500 |
commit | b10af5a4195beb420ce352cb8a989acea810053b (patch) | |
tree | 196b424fafc70aa20f61e2689fd2c95d8b3d1fe1 | |
parent | 742f0efebe4b177253b9df555af6a59ea0c17eb8 (diff) | |
download | gcc-b10af5a4195beb420ce352cb8a989acea810053b.zip gcc-b10af5a4195beb420ce352cb8a989acea810053b.tar.gz gcc-b10af5a4195beb420ce352cb8a989acea810053b.tar.bz2 |
re PR c++/9420 (incomplete type incorrectly reported)
PR c++/9420
* search.c (lookup_conversions): Call complete_type here.
* call.c (implicit_conversion): Not here.
From-SVN: r64649
-rw-r--r-- | gcc/testsuite/g++.dg/template/overload1.C | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/template/overload1.C b/gcc/testsuite/g++.dg/template/overload1.C new file mode 100644 index 0000000..404fc2d --- /dev/null +++ b/gcc/testsuite/g++.dg/template/overload1.C @@ -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; |