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

--- Comment #5 from 3440910457 at qq dot com ---
This bug can be triggered not only by pointer member function, but also by
pointers to inline free functions, for example:

See <https://godbolt.org/z/enznGjczv>

```
#include <functional>

// inline is necessary
inline int add(int a, int b) { return a + b; }

int main() {
    constexpr auto f = std::function_ref(std::cw<&add>);
}
```

The full error is:

In file included from
/cefs/d7/d7b08a093b417e580f5102b8_gcc-trunk-20260810/include/c++/17.0.0/bits/funcwrap.h:667,
                 from
/cefs/d7/d7b08a093b417e580f5102b8_gcc-trunk-20260810/include/c++/17.0.0/functional:93,
                 from <source>:1:
/cefs/d7/d7b08a093b417e580f5102b8_gcc-trunk-20260810/include/c++/17.0.0/bits/funcref_impl.h:
In instantiation of 'constexpr std::function_ref<_Res(_ArgTypes ...) noexcept
(_Noex)>::function_ref(std::constant_wrapper<__fn, _Fn>) [with auto __fn = add;
_Fn = int (*)(int, int); _Res = int; _ArgTypes = {int, int}; bool _Noex =
false]':
<source>:7:55:   required from here
    7 |     constexpr auto f = std::function_ref(std::cw<&add>);
      |                                                       ^
/cefs/d7/d7b08a093b417e580f5102b8_gcc-trunk-20260810/include/c++/17.0.0/bits/funcref_impl.h:148:32:
error: non-constant condition for static assertion
  148 |             static_assert(__fn != nullptr);
      |                           ~~~~~^~~~~~~~~~
/cefs/d7/d7b08a093b417e580f5102b8_gcc-trunk-20260810/include/c++/17.0.0/bits/funcref_impl.h:148:32:
error: '(add != 0)' is not a constant expression
Compiler returned: 1

Reply via email to