私はこのようなことで未経験ですが、n -variable関数を "rotate"引数(以下の例を参照)で評価するテンプレート関数を作成しようとしていますこれらすべての値の関数FとN = 3については、例えばC++可変テンプレート引数の反復
(X、Y、Z)が返さ三重\ベクターは(X、0,0)F
< なければなりません、 F(0、X、0)、F私は、次のようになります。必要なものの(0,0、X)>
ナイーブバージョン(necesありませんセーリー正しい\働き)
typedef FunctionSignature Function;
template<class Function, size_t Dimensions>
std::array<Function::Out,Dimensions> F(Function::InComponent x)
{
std::array<Function::Out,Dimensions> Result;
for (i=0; i<Dimensions; i++)
Result[i] = Function::f("rotate((x,0,...,0),i)");
return Result;
}
しかし、rotate
ものを作る方法。
コンパイル時にn
がよく知られているので、ランタイムfor
が何らかの形で削除されることも期待します。
'f()'関数の代わりにパラメータとして明示的な値のリストを指定する代わりに、 'f()'関数が値のベクトルをとるようにしてください。ベクトルとして値を渡して、パラメータとして渡すと、簡単になります。多様な機能を扱う必要はありません。 –
1) 'f'ベクトルを評価するのに問題はありません。 'n' = 1のときは重複する可能性があります。 .... 2)「やっかいになる」とは助けにならない... 特に、コンパイル時にどのように役立つのか分かりません。 –