Commit 12b03642 by Jason Merrill Committed by Jason Merrill

re PR c++/50523 (C++ FE apparently incorrectly rejects tramp3d)

	PR c++/50523
	* call.c (implicit_conversion): Mask out inappropriate LOOKUP
	flags at the top of the function.

From-SVN: r179203
parent fcb7afc2
2011-09-26 Jason Merrill <jason@redhat.com>
PR c++/50523
* call.c (implicit_conversion): Mask out inappropriate LOOKUP
flags at the top of the function.
* pt.c (tsubst_copy) [PARM_DECL]: Handle 'this' in NSDMI.
2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
......
......@@ -1660,6 +1660,12 @@ implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
|| expr == error_mark_node)
return NULL;
/* Other flags only apply to the primary function in overload
resolution, or after we've chosen one. */
flags &= (LOOKUP_ONLYCONVERTING|LOOKUP_NO_CONVERSION|LOOKUP_COPY_PARM
|LOOKUP_NO_TEMP_BIND|LOOKUP_NO_RVAL_BIND|LOOKUP_PREFER_RVALUE
|LOOKUP_NO_NARROWING|LOOKUP_PROTECT);
if (TREE_CODE (to) == REFERENCE_TYPE)
conv = reference_binding (to, from, expr, c_cast_p, flags);
else
......@@ -1716,15 +1722,13 @@ implicit_conversion (tree to, tree from, tree expr, bool c_cast_p,
&& (flags & LOOKUP_NO_CONVERSION) == 0)
{
struct z_candidate *cand;
int convflags = (flags & (LOOKUP_NO_TEMP_BIND|LOOKUP_ONLYCONVERTING
|LOOKUP_NO_NARROWING));
if (CLASS_TYPE_P (to)
&& BRACE_ENCLOSED_INITIALIZER_P (expr)
&& !CLASSTYPE_NON_AGGREGATE (complete_type (to)))
return build_aggr_conv (to, expr, flags);
cand = build_user_type_conversion_1 (to, expr, convflags);
cand = build_user_type_conversion_1 (to, expr, flags);
if (cand)
conv = cand->second_conv;
......
2011-09-26 Jason Merrill <jason@redhat.com>
PR c++/50523
* g++.dg/overload/ref-conv2.C: New.
* g++.dg/cpp0x/nsdmi-template1.C: New.
2011-09-26 Paolo Carlini <paolo.carlini@oracle.com>
......
// PR c++/50523
template <class T>
struct A
{
A(const T&);
operator T&() const;
operator const T&() const;
};
int main()
{
A<int> a(1);
A<int> a2(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