このセクションでは、インテル® TBB 特有の用語について説明します。
コンセプト (concept) は、型の要件のセットです。要件は、構文または意味を成します。例えば、ソート可能 (Sortable) のコンセプトは、配列のソートを可能にする要件のセットとして定義されます。T 型は、次の場合にソート可能です。
x < y がブール値を返し、T 型のアイテムのすべての順序を表す。
swap(x,y) がアイテム x と y を交換する。
C++ でソート・テンプレート関数を記述して、ソート可能な任意の型の配列がソートできることを保証できます。
コンセプトを定義するための 2 つのアプローチは、有効式 と擬似署名 です。C++ 標準は、使用方法のパターンを示す有効式 アプローチに従っていますが、このアプローチには、重要な詳細表記が規則に影響される欠点があります。このドキュメントでは、簡潔で、最初の実装にカットアンドペーストできるため、擬似署名を使用しています。
下記の表は、ソート可能 (Sortable) コンセプトの T 型の擬似署名を示しています。
擬似署名 |
意味 |
---|---|
bool operator<(const T& x, const T& y) |
x と y を比較します。 |
void swap(T& x, T& y) |
x と y を交換します。 |
実署名は、C++ で許可された暗黙的型変換による擬似署名とは異なります。例えば、C++ では int から bool への暗黙的型変換と U から (const U&) への暗黙的型変換を許可しているため、type U、上記の表の operator< を実装する実署名は、int operator<( U x, U y ) として表現できます。同様に、C++ では参照型への const 修飾子の暗黙的な追加を許可しているため、実署名 bool operator<( U& x, U& y ) は許容されます。
コンセプトの要件を満たす場合、型はコンセプトをモデル化 します。例えば、2 つの int 値 x と y を交換する関数 swap(x,y) が存在する場合、int 型は上記の表のソート可能コンセプトをモデル化します。ソートを可能とするほかの要件、特に x<y は、int 型のビルトイン operator< によってすでに満たされています。
まれに、型が ISO C++ 標準で定義され、型の作成と参照の基本操作を提供するコピーコンストラクト可能 (CopyConstructible) コンセプトのモデル化が必要になることもあります。下記の表は、擬似署名形式でコピーコンストラクト可能 (CopyConstructible) の要件を示しています。
擬似署名 |
意味 |
---|---|
T( const T& ) |
const T のコピーを構築します。 |
~T() |
デストラクター。 |
T* operator&() |
アドレスを取得します。 |
const T* operator&() const |
const T のアドレスを取得します。 |