コンセプト (C++)
コンセプトマップは、コンセプトに型を明示的に結びつけるのに使われる。これにより、型が(可能ならば)型定義を変えることなくコンセプトに適合することを示せる。例を挙げる:
このコンセプトマップは、InputIteratorコンセプトを満たす型としてchar*型を与えている。
柔軟性を高めるため、コンセプトマップ自体をテンプレートに出来る。以下の例は、あらゆるポインタ型を扱えるように拡張したものである:
さらに、コンセプトマップは、クラスに共通に関連付けられる関数定義などの構造を示す、ミニタイプとしても振る舞うことも出来る:
このコンセプトマップは、Stackコンセプトを実装する型を引数とするテンプレートが、std::vectorを引数に取れるように定義している。std::vectorを使えるようにするため、各関数呼び出しをstd::vectorの関数の呼び出しに置き換えている。これを用いれば、究極的には、既に存在するオブジェクトの定義を変えることなく、それをテンプレート関数が使用するインターフェースに適合できる。
静的な表明を用いてコンセプトの各要件を確認できることもできる。実際には静的表明の機能は別の問題に焦点を当てているのであるが、この機能でテンプレートの要する要件を検証することができる。