インテル® C++ コンパイラー 18.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: 同期後のホルダーの値を決定するためのポリシー。有効なキーワードは次のとおりです。

Allocator: 各ホルダーのビューの割り当てに使用されるメモリー・アロケーター。