1
次の動作を達成する方法、またはC++で可能であるかどうかについて質問があります。私はこの可変引数関数にVariadicテンプレート引数への配列要素
template<typename T, typename...Pack>
T sum(T a, Pack... pack) {
return a + sum(pack...);
}
template<typename T>
T sum(T a) {
return a;
}
を持っているし、私は配列
double array[5];
を持っていると言うことは、私は、各要素にハードコーディングせずに
sum(array[0], array[1], array[2], array[3], array[4]);
のようなものをやって行くことができる方法があります明示的に?理由は、私は
double array[N];
sum(array[0], array[1], array[2], ..., array[N-1]);
のようなものを実装しようとしています。ここで、Nはコンパイル時に設定されています。
私は(ようになっているようですが拡大して理解して... )、しかしarr [Is] ...のようなものは見たことがない。それは有効な拡張ですか?また、私は一般的に物事を合計しようとしていませんが、合算は私が達成しようとしているインターフェースを実証できるような単純な例に過ぎませんでした。 – armstrhu
@armstrhuはい、拡張が許可されているコンテキストであれば、任意の複雑な式を展開できます。 'arr [Is] ...'は 'arr [Is#1]、arr [Is#2]、...、arr [Is#N]'に展開されます。 [私の答えはこちら](http://stackoverflow.com/a/26767333/2069064)と[Nawazのここ](http://stackoverflow.com/a/17652683/2069064)も参照してください。 – Barry