From: jason Date: Wed, 18 Jun 2014 22:13:51 +0000 (+0000) Subject: PR c++/59296 X-Git-Tag: upstream/5.3.0~7663 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ff56b20f7bbad1d5eb3b6ecc87892f4a599dc84;p=platform%2Fupstream%2Flinaro-gcc.git PR c++/59296 * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for ref-qualifier handling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211809 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 74eefea..7e7521b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2014-06-18 Jason Merrill + PR c++/59296 + * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for + ref-qualifier handling. + PR c++/61507 * pt.c (resolve_overloaded_unification): Preserve ARGUMENT_PACK_EXPLICIT_ARGS. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 1d4c4f9..b4adf36 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -2025,6 +2025,8 @@ add_function_candidate (struct z_candidate **candidates, object parameter has reference type. */ bool rv = FUNCTION_RVALUE_QUALIFIED (TREE_TYPE (fn)); parmtype = cp_build_reference_type (parmtype, rv); + /* Don't bind an rvalue to a const lvalue ref-qualifier. */ + lflags |= LOOKUP_NO_RVAL_BIND; } else { diff --git a/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C b/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C new file mode 100644 index 0000000..ca333c2 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/ref-qual15.C @@ -0,0 +1,13 @@ +// PR c++/59296 +// { dg-do compile { target c++11 } } + +struct Type +{ + void get() const& { } + void get() const&& { } +}; + +int main() +{ + Type{}.get(); +}