From: Jason Merrill Date: Wed, 18 Jun 2014 22:13:51 +0000 (-0400) Subject: re PR c++/59296 ([c++11] ref-qualified member function is ambiguous) X-Git-Tag: releases/gcc-5.1.0~6778 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=74f4bbb732c22a2725fdc2fc8705a4cb46eeb477;p=thirdparty%2Fgcc.git re PR c++/59296 ([c++11] ref-qualified member function is ambiguous) PR c++/59296 * call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for ref-qualifier handling. From-SVN: r211809 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 74eefeaec1d1..7e7521b750cf 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 1d4c4f99e2f3..b4adf363be91 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 000000000000..ca333c2e2874 --- /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(); +}