// { 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" }
}