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

            Bug ID: 128582
           Summary: Cannot make member pointer to move assignment operator
                    of lambda
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: eczbek.void at gmail dot com
  Target Milestone: ---

https://godbolt.org/z/eh9cn8YsY
Clang and MSVC accept this, and it should be required by
https://eel.is/c++draft/expr.prim.lambda.closure#17.sentence-3

```
using T = decltype([] {});
T&(T::*p)(T&&) = &T::operator=;
```

```
<source>:2:18: error: cannot convert '<lambda()>&
(<lambda()>::*)(const<lambda()>&) noexcept' to 'T& (<lambda()>::*)(T&&)' {aka
'<lambda()>& (<lambda()>::*)(<lambda()>&&)'} in initialization
    2 | T&(T::*p)(T&&) = &T::operator=;
      |                  ^~~~~~~~~~~~~
```

Reply via email to