From fab8f0b6c32ccb9784a95c5996c5be1ace128fec Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 13 May 2013 15:32:15 -0400 Subject: re PR c++/57252 (GCC does not treat ref-qualified overload set as ambiguous) PR c++/57252 * decl.c (decls_match): Compare ref-qualifiers. From-SVN: r198841 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 1 + gcc/testsuite/g++.dg/cpp0x/ref-qual10.C | 13 +++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/ref-qual10.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 67b4d77..eab529a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2013-05-13 Jason Merrill + + PR c++/57252 + * decl.c (decls_match): Compare ref-qualifiers. + 2013-05-10 Jason Merrill PR c++/57196 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 9c97c9d..0df3ae8 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -1024,6 +1024,7 @@ decls_match (tree newdecl, tree olddecl) else types_match = compparms (p1, p2) + && type_memfn_rqual (f1) == type_memfn_rqual (f2) && (TYPE_ATTRIBUTES (TREE_TYPE (newdecl)) == NULL_TREE || comp_type_attributes (TREE_TYPE (newdecl), TREE_TYPE (olddecl)) != 0); diff --git a/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C b/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C new file mode 100644 index 0000000..1b6c54f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/ref-qual10.C @@ -0,0 +1,13 @@ +// PR c++/57252 +// { dg-require-effective-target c++11 } + +struct foo { + void bar() & {} + void bar() && {} +}; + +int main() +{ + auto p = &foo::bar; // { dg-error "" } + (foo{}.*p)(); +} -- cgit v1.1