https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114771

            Bug ID: 114771
           Summary: GCC accepts invalid overloading of member function
                    differing only in ref qualifier
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jlame646 at gmail dot com
  Target Milestone: ---

The following invalid program is accepted by gcc and clang:
https://godbolt.org/z/8b5bKxxnn

```
#include <concepts>

struct s {
    int f(auto...)&;
    void f(auto...); // clang ok, gcc ok, msvc nope
};
static_assert(std::same_as<decltype(s{}.f()), void>);
```
c++20 over.load https://timsong-cpp.github.io/cppwp/n4868/over.load#2.3 says:

> Member function declarations with the same name, the same parameter-type-list 
> ([dcl.fct]), and the same trailing requires-clause (if any), as well as 
> member function template declarations with the same name, the same 
> parameter-type-list, the same trailing requires-clause (if any), and the same 
> template-head, cannot be overloaded if any of them, but not all, have a 
> ref-qualifier ([dcl.fct]).

Reply via email to