diff options
author | Jason Merrill <jason@redhat.com> | 2014-06-18 18:13:51 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-06-18 18:13:51 -0400 |
commit | 74f4bbb732c22a2725fdc2fc8705a4cb46eeb477 (patch) | |
tree | ecc843095e07dc1b31017b5dac0be52d6a946934 /gcc | |
parent | e3dc80be5eea6667a4dd7b2f2a52108d9c4ea06a (diff) | |
download | gcc-74f4bbb732c22a2725fdc2fc8705a4cb46eeb477.zip gcc-74f4bbb732c22a2725fdc2fc8705a4cb46eeb477.tar.gz gcc-74f4bbb732c22a2725fdc2fc8705a4cb46eeb477.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/call.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/ref-qual15.C | 13 |
3 files changed, 19 insertions, 0 deletions
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 <jason@redhat.com> + 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(); +} |