// PR c++/111493 // { dg-do compile { target c++23 } } template concept CartesianIndexable = requires(T t, Ts... ts) { t[ts...]; }; static_assert(!CartesianIndexable); static_assert(!CartesianIndexable); static_assert(!CartesianIndexable); static_assert(!CartesianIndexable); static_assert(CartesianIndexable); static_assert(!CartesianIndexable); static_assert(!CartesianIndexable); template struct A { void operator[](Ts...); }; static_assert(!CartesianIndexable, int>); static_assert(CartesianIndexable, int>); static_assert(!CartesianIndexable>); static_assert(!CartesianIndexable, int, int>); static_assert(CartesianIndexable, int, int>);