そのインスタンスが 2 つに分割可能な型の要件。
次の表は、インスタンス x を含む分割可能な型 X の要件を示しています。
擬似署名 |
意味 |
---|---|
X::X(X& x, split) |
x を x と新しく構築されるオブジェクトに分割します。 |
インスタンスを 2 つの部分に分割できるコンストラクター がある場合、型は分割可能です。分割コンストラクターの引数は、オリジナル・オブジェクトへの参照と、ライブラリーによって定義される型 split の仮引数です。この仮引数によって、分割コンストラクターとコピー・コンストラクターが区別されます。コンストラクターを実行した後、x および新しく構築されるオブジェクトは、オリジナルの x の 2 つのピースに相当します。ライブラリーは 2 つのコンテキストで分割コンストラクターを使用します。
Range クラスは、proportional_split 型の引数でオプションの比例分割コンストラクター を追加で定義します。詳細は、「proportional_split クラス」および「blocked_range テンプレート・クラス」セクションを参照してください。
以下のモデル型の例が提供されています。
blocked_range および blocked_range2d は分割可能な範囲を表します。どちらの場合も、範囲を 2 つのサブ範囲へ分割します。blocked_range の分割コンストラクターについては、「blocked_range テンプレート・クラス」セクションの例を参照してください。
parallel_reduce と parallel_scan のボディーは分割可能でなければなりません。どの場合も、同時に実行できる 2 つのボディーを生成します。