* call.c (joust): Fix handling of overloaded builtin operators.
From-SVN: r34269
This commit is contained in:
parent
28ecb7ab47
commit
54ae96de89
3 changed files with 18 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
|||
2000-05-30 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* call.c (joust): Fix handling of overloaded builtin operators.
|
||||
|
||||
2000-05-30 Zack Weinberg <zack@wolery.cumb.org>
|
||||
|
||||
* cp-tree.h (DECL_ANTICIPATED): New macro.
|
||||
|
|
|
@ -5128,7 +5128,7 @@ joust (cand1, cand2, warn)
|
|||
/* Kludge around broken overloading rules whereby
|
||||
Integer a, b; test ? a : b; is ambiguous, since there's a builtin
|
||||
that takes references and another that takes values. */
|
||||
if (DECL_OVERLOADED_OPERATOR_P (cand1->fn) == COND_EXPR)
|
||||
if (cand1->fn == ansi_opname (COND_EXPR))
|
||||
{
|
||||
tree c1 = TREE_VEC_ELT (cand1->convs, 1);
|
||||
tree c2 = TREE_VEC_ELT (cand2->convs, 1);
|
||||
|
|
13
gcc/testsuite/g++.old-deja/g++.other/overload13.C
Normal file
13
gcc/testsuite/g++.old-deja/g++.other/overload13.C
Normal file
|
@ -0,0 +1,13 @@
|
|||
// Build don't link:
|
||||
// Origin: Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
struct A {
|
||||
bool operator== (A const &);
|
||||
operator bool () const;
|
||||
operator int * () const;
|
||||
};
|
||||
|
||||
bool foo (A &a1, A &a2)
|
||||
{
|
||||
return a1 == a2;
|
||||
}
|
Loading…
Add table
Reference in a new issue