コンセプトの定義内でも、型に対する要件を指定することができます。
これを関連要件(Associated Requirements)といいます。
concept Hoge<class X> {
requires std::CopyConstructible<X>;
}
たとえば、述語を表すPredicateコンセプトを定義する際には、
戻り値の型はboolに変換可能な型でなければいけないので、以下のように指定します。
concept Predicate<class F, class R, class... Args> { requires std::Convertible<R, bool>; ... }