Note for Boost Concept Check Library (BCCL)
以下の記述は公式のドキュメントを自分なりに要約した物であり、
和訳を目指す物ではない。
また内容を保証するものでもない。
Index
- #1 Concept Checking Introduction
- #2 Using Concept Checks
- #3 Creating Concept Checking Classes
- #4 Concept Covering and Archetypes
Concept Checking Introduction
Conceptが必要な理由
- 間違ったテンプレート引数によるコンパイルエラーが非常に難読である。その間違ったテンプレート引数使用された位置でなく、
ユーザーが見る必要のない、テンプレート実装の内側でエラーが発生したように見える。 - コンパイルを実行してみない事には、不完全で曖昧な事が多いドキュメントでしか、
そのテンプレート引数に必要な条件を知る事ができない。 - ドキュメントのテンプレート引数の条件が不十分かもしれない、
つまりドキュメント通りに実装してもエラーになるかもしれない。 - ドキュメントのテンプレート引数の条件が本当に必要とされているよりも厳しすぎるかもしれない。
- Concept names in code may drift out-of-sync with the documented requirements. (意味がわからない)
要は、テンプレート引数の条件(requirements)が正確に記述できないのと、
テンプレートを使用した場合のエラーをもっと見易くしようという2点。
Boost.Conceptが提供する機能
- コンパイル時にテンプレート引数をチェックする機構をテンプレートを使用した部分に導入
- コンセプトを満しているか(specifying concept)をチェックするフレームワーク
- コンセプトがテンプレート実装を cover しているかをチェックする機構、
つまりコンセプトを満していればテンプレート実装がエラーにならない事を保証する機構。 - C++標準ライブラリで使用するコンセプト群
- 次期C++で提案されているコンセプト用のシンタックスの代替