Commit ce0ecb98 by Jason Merrill Committed by Jason Merrill

re PR c++/43559 (Overloaded template functions became ambiguous)

	PR c++/43559
	* pt.c (more_specialized_fn): Don't control cv-qualifier check
	with same_type_p.

From-SVN: r157831
parent 26e02053
2010-03-30 Jason Merrill <jason@redhat.com>
PR c++/43559
* pt.c (more_specialized_fn): Don't control cv-qualifier check
with same_type_p.
2010-03-26 Jason Merrill <jason@redhat.com>
PR c++/43509
......
......@@ -15474,13 +15474,10 @@ more_specialized_fn (tree pat1, tree pat2, int len)
than the type from the parameter template (as described above)
that type is considered to be more specialized than the other. If
neither type is more cv-qualified than the other then neither type
is more specialized than the other."
is more specialized than the other." */
We check same_type_p explicitly because deduction can also succeed
in both directions when there is a nondeduced context. */
if (deduce1 && deduce2
&& quals1 != quals2 && quals1 >= 0 && quals2 >= 0
&& same_type_p (arg1, arg2))
&& quals1 != quals2 && quals1 >= 0 && quals2 >= 0)
{
if ((quals1 & quals2) == quals2)
lose2 = true;
......
2010-03-30 Jason Merrill <jason@redhat.com>
PR c++/43559
* g++.dg/template/partial7.C: New.
2010-03-30 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.target/s390/stackcheck1.c: New testcase.
......
// PR c++/43559
template<typename T, typename U> void f(U&) { }
template<typename T, typename U> void f(T const&) { }
int main()
{
int a;
f<int, int const>(a);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment