C++0x コンセプトの否定要件(negative requirements)

テンプレートの要件を指定する際に、要件のコンセプトに「!」を付加することによって、
「その要件を満たさない場合」という否定要件(negative requirements)を書くことができます。

template <class T>
    requires IntegralType<T>
void foo(T x);

template <class T>
    requires !IntegralType<T>
void foo(T x);

これを使用すれば、Boostのenable_if/disable_ifに相当するオーバーロードを
コンセプトで行うことができます。