インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス
n_bounds_t を簡単に作成できるようにします。
#include <sdlt/n_bounds.h>
template<typename... TypeListT> class n_bounds_generator; namespace { // ジェネレーター・オブジェクトのインスタンス n_bounds_generator<> n_bounds; }
ジェネレーター・オブジェクトは、bounds_t<LowerT, UpperT> 値に再帰的な構築演算子 [] を提供し、n_bounds_t<…> のインスタンスを 1 次元ずつ作成できるようにします。 その主な目的は、C の多次元配列定義に似た構文の使用を可能にすることです。
ジェネレーター・オブジェクトとファクトリー関数を使用しないでインスタンス化する場合:
n_bounds_t<bounds_t<fixed<540>, fixed<1080>>, bounds_t<fixed<960>, fixed<1920>>> bounds1(bounds_t<540_fixed,1080_fixed>(), bounds_t<960_fixed, 1920_fixed>)); n_bounds_t<bounds_t<int, int>, bounds_t<int, int>> bounds2(bounds_t<int, int>(540,960), bounds_t<int, int>(960, 1920));ジェネレーター・オブジェクトとファクトリー関数を使用してインスタンス化する場合:
auto bounds1 = n_bounds[bounds(540_fixed, 1080_fixed)] [bounds(960_fixed, 1920_fixed)]; auto bounds2 = n_bounds[bounds(540, 1080)] [bounds(960, 1920)];または、n_index_t および n_extent_t ジェネレーター・オブジェクトと演算子 () を使用する場合:
auto bounds1 = n_bounds(n_index[540_fixed][960_fixed], n_extent[540_fixed][960_fixed]); auto bounds2 = n_bounds(n_index[540][960], n_extent[540][960]);
クラス階層
n_bounds_generator<…> は、n_bounds_t<...> のみから派生し、データメンバーまたは引数として直接使用されることは想定されていません。 ジェネレーター・オブジェクト n_bounds は、n_bounds_t<…> が想定される場所では自動的にダウンキャストされます。
次の表は、n_bounds_generator のテンプレート引数の情報です。
テンプレート引数 |
説明 |
---|---|
typename... TypeListT |
型のカンマ区切りリスト。型の数がジェネレーターの次元数を制御します。 リスト中の各型は、対応する次元の境界を示します。 次元の順番は、C++ の多次元配列の添字と同じ (左端から右端) です。 要件: リストに含まれる型は bounds_t<LowerT, UpperT>。 |
次の表は、n_bounds_t から継承される型に加えて、n_bounds_generator のメンバーとして定義されている型の情報です。
メンバーの型 |
説明 |
---|---|
typedef n_bounds_t<TypeListT...> value_type |
チェーン表記の [] 演算子の呼び出しにより生成された型の値。 |
次の表は、n_bounds_t から継承されるメンバーに加えて、n_bounds_generator のメンバーの情報です。
メンバー |
説明 |
---|---|
n_bounds_generator() |
要件: TypeListT は空。 効果: 境界が指定されていないジェネレーターを構築します。 |
n_bounds_generator(const n_bounds_generator &a_other) |
効果: a_other から境界の値をコピーしてジェネレーターを構築します。 |
template<typename LowerT, typename UpperT> auto operator [] ( const bounds_t<LowerT, UpperT> & a_bounds) const |
効果: n_bounds_generator<…> と右端の bounds_t<LowerT, UpperT> ベースの次元を構築します。 戻り値: n_bounds_generator<TypeListT..., bounds_t< LowerT, UpperT >>。 |
template<class... IndexTypeListT, class... ExtentTypeListT> auto operator () ( const n_index_t<IndexTypeListT...> & a_indices, const n_extent_t<ExtentTypeListT...> & a_extents) const |
要件: a_indices のランクは a_extents のランクと同じで、TypeListT は空。 効果: n_bounds_generator<…> を構築します。n 下限は a_indices によって指定され、n 上限は a_extents + a_indices。 戻り値: n_bounds[bounds(a_indices.get<0>(), a_indices.get<0>() + a_extents.get<0>())] [bounds(a_indices.get<1>(), a_indices.get<1>() + a_extents.get<1>())] [bounds(a_indices.get<…>(), a_indices.get<…>() + a_extents.get<…>())] [bounds( a_indices.get<row_dimension>(), a_indices.get< row_dimension >() + a_extents.get<row_dimension >())] |
value_type value() const |
戻り値: n_bounds_t<…> とジェネレーターにより集約された多次元境界の適切な型と値。 |