テンプレート関数foo
を、異なる(型のない)パラメータのシーケンスで呼び出すときに、下限と上限の間で連続する整数値を使用したいとします。例えば:複数のパラメータ値を持つテンプレート関数を呼び出す
template <int K> void foo(){ ... }
int const UPPER = 10, LOWER = 5;
for(int i = LOWER; i <= UPPER; i++)
foo<i>();
これ、もちろん、i
はコンパイル時に知られていないため、動作しません。私は次の1つの実行からUPPER
とLOWER
を変更するには予定のため、これは特にあり
foo<5>(); foo<6>(); foo<7>(); foo<8>(); foo<9>(); foo<10>();
:私は次のように記述することなく、プログラムのこの種を達成するための方法を探しています。配列の要素が一定であるものの、i
が知られていない、再び
int const arr[6] = {5, 6, 7, 8, 9, 10};
for(int i = LOWER; i <= UPPER; i++)
foo<arr[i]>();
しかし、:
私の唯一のアイデアは、テンプレートパラメータに送信される整数の定数配列を作成することでしたコンパイル時にはどちらもarr[i]
です。助言がありますか?
ありがとうございます。
それはあなたが[ 'STDを使用したい場合があり次のようになります。 :integer_sequence'](http://en.cppreference.com/w/cpp/utility/integer_sequence) – NathanOliver
foo()を '構造体foowrapper'テンプレートに置くと、もっと簡単になります。 ? –
lorro