These answers studious avoid the question: how do you constrain a concept by another concept. For example, maybe I want a function that only produces complex numbers, but I don't care what complex number iteration is being used. Let's pretend that such a concept exists.
template<typename T>
concept complex_rooter = requires(const T ct, std::numeric auto x) {
{ ct.sqrt(x) } -> std::convertible_to<std::complex auto>
}
In both cases, you cannot use a concept.
Okay, fine, that's the syntax, so what do you do?