Commit 9380ed84 by Jason Merrill Committed by Jason Merrill

re PR c++/31419 (template user defined conversion operator instantiated for conversion to self)

        PR c++/31419
        * call.c (reference_binding): Don't look for user-defined conversions
        to the same type.

From-SVN: r128102
parent 4aeb3896
2007-09-04 Jason Merrill <jason@redhat.com>
PR c++/31419
* call.c (reference_binding): Don't look for user-defined conversions
to the same type.
PR c++/31411
* except.c (initialize_handler_parm): Put a CLEANUP_POINT_EXPR inside
the MUST_NOT_THROW_EXPR.
......
......@@ -1200,7 +1200,12 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
return conv;
}
else if (CLASS_TYPE_P (from) && !(flags & LOOKUP_NO_CONVERSION))
/* [class.conv.fct] A conversion function is never used to convert a
(possibly cv-qualified) object to the (possibly cv-qualified) same
object type (or a reference to it), to a (possibly cv-qualified) base
class of that type (or a reference to it).... */
else if (CLASS_TYPE_P (from) && !related_p
&& !(flags & LOOKUP_NO_CONVERSION))
{
/* [dcl.init.ref]
......
// PR c++/31419
struct B
{
template<typename T>
operator T const& () const
{
return 42;
}
};
B f()
{
return B();
}
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