名前付き要件

[named_requirements]

ここでは、oneTBB 仕様で使用される名前付き要件について説明します。

名前付き要件は、タイプの要件のセットです。要件は、構文または意味を成します。名前付き要件 (named_requirement) の用語は、cppreference.com サイトにある ISO C++ 標準 (“ライブラリーの概要”) または “名前付き要件” で定義される “タイプと式の要件”の用語と類似しています。

例えば、ソート可能の名前付き要件は、配列のソートを可能にする要件のセットとして定義されます。T タイプは、次の場合にソート可能です。

  • x < y がブール値を返し、T タイプの項目のすべての順序を表します。

  • swap(x,y)xy の項目を入れ替えます。

C++ でソート・テンプレート関数を記述して、ソート可能な任意のタイプの配列がソートできることを保証できます。

名前付き要件を定義する 2 つのアプローチは、有効式擬似署名 です。ISO C++ 標準は、使用方法のパターンを示す有効式 のアプローチに従います。しかしこれには、重要な詳細を表記規則に押し付けてしまう欠点があります。このドキュメントでは、簡潔で、最初の実装にカットアンドペーストできるため、擬似署名を使用しています。

下記の表は、ソート可能T タイプの擬似署名を示しています:


ソート可能要件: 擬似署名、セマンティクス

bool operator<(const T &x, const T &y)

x と y を比較します。

void swap(T &x, T &y)

x と y を入れ替えます。


実署名は、C++ で許可された暗黙的タイプ変換による擬似署名とは異なります。タイプ U の場合、表の operator< を実装する実際のシグネチャーは、int operator<( U x, U y ) として表わすことができますが、これは C++ では int から bool への暗黙の変換と、U から (const U&) への暗黙の変換が許容されるためです。同様に、C++ では参照タイプへの const 修飾子の暗黙的な追加を許可しているため、実署名 bool operator<( U& x, U& y ) は許容されます。

アルゴリズム

ミューテックス

コンテナー

タスク・スケジューラー

フローグラフ