https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117849
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reduced without any headers:
```
template <typename T, int N>
struct a{};
template<typename T, int N>
constexpr int f(const T (&a)[N])
{
return N;
}
template<typename T, int N>
constexpr int f(const a<T,N> &a)
{
return N;
}
template<int N>
struct i{
constexpr bool operator==(const i &)
{ return true;};
};
template<typename T>
concept StaticSizedRange = requires (T&& t) {
typename i<f(t)>;
};
template<typename T>
constexpr auto g(T&& t)
{
return i<f(t)>{};
}
a<int, 5> b;
static_assert(g(b)==g(b));
static_assert(StaticSizedRange<a<int, 5>>);
static_assert(StaticSizedRange<a<int, 5>&>);
static_assert(StaticSizedRange<const a<int, 5>&>);
```
GCC is the only one that accepts the first static_assert which shows that
P2280R4 is at least partially implemented.