https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119814
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2025-04-15
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, it has to do with the return type needing to be a dependent.
Take:
```
void a(...);
template<typename T = void, T (*v)(...) = a>
bool b1()
{ return requires { v(v(1)); }; }
bool c() { return b1(); }
```
GCC has a return value of 1 here while it should be 0.
Also take:
```
void a(...);
template<typename T = void, void (*v)(...) = a>
bool b1()
{ return requires { v(v(1)); }; }
bool c() { return b1(); }
```
clang/MSVC accepts this has a return value of 0 while GCC rejects this saying:
```
<source>: In function 'bool b1()':
<source>:5:25: error: void value not ignored as it ought to be
[-Wtemplate-body]
5 | { return requires { v(v(1)); }; }
| ~^~~
```