フィルター
[algorithms.parallel_pipeline.filter]
filter
クラス・テンプレートは、parallel_pipeline
アルゴリズムで厳密にタイプ指定されたフィルターを表し、そのテンプレート・パラメーターにはフィルターの入力タイプと出力タイプを指定します。filter
は、ファンクターから、または operator&()
を使用して 2 つ filter
オブジェクトを組み合わせてることで作成できます。同じ filter
オブジェクトを複数の &
式で再利用できます。
filter
クラスは、parallel_pipeline
関数とともにのみ使用します。
// <oneapi/tbb/parallel_pipeline.h> ヘッダーで定義
namespace oneapi {
namespace tbb {
template<typename InputType, typename OutputType>
class filter {
public:
filter() = default;
filter( const filter& rhs ) = default;
filter( filter&& rhs ) = default;
void operator=(const filter& rhs) = default;
void operator=( filter&& rhs ) = default;
template<typename Body>
filter( filter_mode mode, const Body& body );
filter& operator&=( const filter<OutputType,OutputType>& right );
void clear();
}
template<typename T, typename U, typename Body>
filter<T,U> make_filter( filter::mode mode, const Body& f );
template<typename T, typename V, typename U>
filter<T,U> operator&( const filter<T,V>& left, const filter<V,U>& right );
} // namespace tbb
} // namespace oneapi
要件:
InputType が
void
である場合、Body
タイプは StartFilterBody の要件に従う必要があります。OutputType が
void
である場合、Body
タイプは OutputFilterBody の要件に従う必要があります。.InputType と OutputType が
void
でない場合、Body
タイプは MiddleFilterBody の要件に従う必要があります。InputType と OutputType が
void
である場合、Body
タイプは SingleFilterBody の要件に従う必要があります。.
filter_mode 列挙
メンバー関数
- filter()
未定義フィルターを作成します。
警告
operator&()
またはparallel_pipeline
で未定義フィルターを使用した場合の結果は未定義です。
- template<typename Body>
filter(filter_mode mode, const Body &body) 与えられた
body
のコピーを使用して、InputType タイプの入力値を OutputType タイプの出力値にマップし、指定されたmode
で動作するfilter
を作成します。
- void clear()
*this
を未定義フィルターに設定します。
非メンバー関数
デダクション・ガイド
template<typename Body>
filter(filter_mode, Body) -> filter<filter_input<Body>, filter_output<Body>>;
説明:
filter_input<Body>
はBody::operator()
入力パラメーター・タイプのエイリアスです。Body::operator()
入力パラメーターのタイプがflow_control
である場合、filter_input<Body>
はvoid
です。filter_output<Body>
はBody::operator()
戻りタイプのエイリアスです。