インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ジェネレーター・オブジェクト n_index を使用することで、n_index_t オブジェクトを簡単に作成できます。
template<typename... TypeListT>
class n_index_generator;
namespace {
// ジェネレーター・オブジェクトのインスタンス
n_index_generator<> n_index;
}
ジェネレーター・オブジェクトは、fixed<>、aligned<>、integer 値に再帰的な構築演算子 [] を提供し、n_index_t<…> のインスタンスを 1 次元ずつ作成できるようにします。その主な目的は、C の多次元配列定義に似た構文の使用を可能にすることです。
3 つの n_index_t インスタンスを作成する例とジェネレーター・オブジェクトを使用して同等のインスタンスを作成する例を比べてみます。
n_index_t<int, int> idx1(row, col);
n_index_t<int, aligned<16>> idx2(row, aligned<16>(col));
n_index_t<fixed<540>, fixed<960>> idx3(540_fixed, 960_fixed);
auto idx1 = n_index[row][col];
auto idx2 = n_index[row][aligned<16>(col)];
auto idx3 = n_index[540_fixed][960_fixed];
クラス階層
n_index_generator < … > は、n_index_t <...> のみから派生し、データメンバーまたは引数として直接使用されることは想定されていません。ジェネレーター・オブジェクト n_index は、n_index_t<…> が想定される場所では自動的にダウンキャストされます。
次の表は、n_index_generator のテンプレート引数を示します。
テンプレート引数 | 説明 |
---|---|
typename... TypeListT |
型のカンマ区切りリスト。型の数が現在のジェネレーターの次元数を制御します。リスト中の各型は、対応する次元のサイズを示します。次元の順番は、C++ の多次元配列の添字と同じ (左端から右端) です。
要件: int、fixed<NumberT>、または aligned<AlignmentT> 型。 |
次の表は、n_index_t から継承される型に加えて、n_index_generator のメンバーとして定義されている型の情報です。
メンバーの型 | 説明 |
---|---|
typedef n_index_t<TypeListT...> value_type |
チェーン表記の [] 演算子の呼び出しにより生成された型の値。 |
次の表は、n_index_t から継承されるメンバーに加えて、n_index_generator のメンバーの情報です。
メンバー | 説明 |
---|---|
n_index_generator () |
要件: TypeListT は空。 効果: インデックスが指定されていないジェネレーターを構築します。 |
n_index_generator (const n_index_generator &a_other) |
効果: a_other からインデックスの値をコピーしてジェネレーターを構築します。 |
n_index_generator<TypeListT..., int> operator [] (int a_index) const |
要件: a_size >= 0。 戻り値: n_index_generator<…> と右端の整数ベースのインデックス。 |
n_index_generator<TypeListT..., fixed<NumberT>> operator [] (fixed<NumberT> a_index) const |
要件: a_size >= 0。 戻り値: n_index_generator<…> と右端の rightmost fixed<NumberT> インデックス。 |
n_index_generator<TypeListT..., aligned<AlignmentT>> operator [] (aligned<AlignmentT> a_index) |
要件: a_size >= 0。 戻り値: n_index_generator<…> と右端の aligned<AlignmentT> ベースのインデックス。 |
value_type value() const |
戻り値: n_extent_t<…> とジェネレーターにより集約された多次元範囲の適切な型と値。 |