re PR c++/49267 (Ambiguity with conversion functions "T&" and "T&&", initializing a "T&&")

PR c++/49267
	* call.c (reference_binding): Don't set is_lvalue for an rvalue
	reference rfrom.

From-SVN: r178521
This commit is contained in:
Jason Merrill 2011-09-05 00:33:57 -04:00 committed by Jason Merrill
parent 0ad2cde83d
commit 1a94ffae36
2 changed files with 7 additions and 2 deletions

View File

@ -1,5 +1,9 @@
2011-09-04 Jason Merrill <jason@redhat.com>
PR c++/49267
* call.c (reference_binding): Don't set is_lvalue for an rvalue
reference rfrom.
PR c++/49267
PR c++/49458
DR 1328

View File

@ -1576,9 +1576,10 @@ reference_binding (tree rto, tree rfrom, tree expr, bool c_cast_p, int flags)
if (TREE_CODE (from) == REFERENCE_TYPE)
{
/* Anything with reference type is an lvalue. */
is_lvalue = clk_ordinary;
from = TREE_TYPE (from);
if (!TYPE_REF_IS_RVALUE (rfrom)
|| TREE_CODE (from) == FUNCTION_TYPE)
is_lvalue = clk_ordinary;
}
if (expr && BRACE_ENCLOSED_INITIALIZER_P (expr))