C++0x コンセプトの関連要件(Associated Requirements)

コンセプトの定義内でも、型に対する要件を指定することができます。
これを関連要件(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>;

    ...
}