インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」 (英語) を参照してください。
ホルダーの構文は、次のとおりです。
#include <cilk/holder.h> enum holder_policy { holder_keep_indeterminate, holder_keep_last, holder_keep_last_copy, holder_keep_last_swap, holder_keep_last_move }; template <typename Type, holder_policy Policy = holder_keep_indeterminate, typename Allocator = std::allocator<Type> > class holder { /// デフォルトのコンストラクターは、左端ビューと各単位元ビューに /// デフォルトの初期化を使用する holder(const Allocator& alloc = Allocator()); /// 左端ビューと各単位元ビューの初期化に使用された /// モデルを利用して構築する holder(const Type& v, const Allocator& alloc = Allocator()); /// 左端ビューと各単位元ビューの初期化に使用された /// 関数子を利用して構築する /// 関数子 'f’ は 'Type x = f()' 構文で呼び出すことができなければならない template <typename Func> holder(const Func& f, const Allocator& alloc = Allocator()); /// 現在のビューを返す Type& view(); Type const& view() const; Type& operator()(); Type const& operator()() const; };
テンプレート引数:
Type: ホルダーに格納するオブジェクトの型。
Policy: 同期後のホルダーの値を決定するためのポリシー。有効なキーワードは次のとおりです。
holder_keep_indeterminate:
ホルダーの値は、中間値になります (最も効率的)。holder_keep_last: ホルダーの値は、プログラムのシリアル部分で設定された最後の値になります。インテル® Cilk™ Plus ライブラリーは、最も効率的なものを選択するコンパイル時のヒューリスティックを使用して、次のいずれかのポリシーを選択します。
holder_keep_last_copy: ホルダーの値は、プログラムのシリアル部分で設定された最後の値をコピー割り当てしたものになります。
holder_keep_last_swap: ホルダーの値は、Type::swap(Type&) メンバー関数を呼び出して設定されます。
holder_keep_last_move: ホルダーの値は、プログラムのシリアル部分で設定された最後の値を移動割り当てしたものになります (C++11 モードの場合のみ)。
Allocator: 各ホルダーのビューの割り当てに使用されるメモリー・アロケーター。