// { dg-do compile { target c++20 } } template <class T, class U> concept Concept2 = requires (T t, U u) // { dg-error "depends on itself" } { t += u; }; template <class T> concept Concept = Concept2 <T, T>; struct S { template <Concept T> constexpr S& operator += (T o); }; constexpr S operator * (S a, S b) { return a += b; // { dg-error "no match" } }