https://gcc.gnu.org/bugzilla/show_bug.cgi?id=127321
--- Comment #2 from Ivan Lazaric <ivan.lazaric.gcc at gmail dot com> ---
Simplified example, same behaviour
```cpp
template<int n>
struct registry {
friend consteval auto injected(registry);
};
template<int n, typename T>
struct inject {
friend consteval auto injected(registry<n>) { return T{}; }
};
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wsfinae-incomplete=0"
#pragma GCC diagnostic pop
template<int n, typename = decltype([]{})>
consteval int query() {
if constexpr (requires (registry<n> r) { injected(r); }) {
return sizeof(injected(registry<n>{}));
} else {
return 0;
}
}
static_assert(query<0>() == 0);
inject<0, int> i;
static_assert(query<0>() == 4);
```
https://godbolt.org/z/MG4xxW7bh
https://godbolt.org/z/dEEsEes3j