Variadicテンプレートは、再帰的な操作を行う上で本当に便利です。この場合、私は繰り返し呼び出す必要がないので、それぞれの再帰呼び出しを2つの引数で操作したいと思います。私は書くことができ、この達成するために:Variadicテンプレートの引数群を渡す
f() {}
template<typename M,
typename N,
typename... Rest>
f(M arg1, N arg2, Rest... rest)
{
doStuff(arg1, arg2);
f(rest);
}
をそれから私は、このようなとしてこれを呼び出します。しかし
f(arg1a, arg1b,
arg2a, arg2b,
arg3a, arg3b);
、コールがそのようにきれいにフォーマットされ、すべての引数が1行上にあるされていない場合、または列が間違った点で分割されても、それはかなり読めなくなります。特にそのような場合は、数十人程度のペアが含まれている可能性があります。これは主に初期化子リストとして失敗しているようだ
f({arg1a, arg1b},
{arg2a, arg2b},
{arg3a, arg3b});
取得していません:。私は、このように呼ばれるように持っている機能を希望に渡されるペアのパラメータパックを必要とすることによってこの問題を解決しようとしましたペアに推論する私は引数の各セットでmake_pairを呼び出すことができますが、それは別の可読性問題で可読性の問題を解決するだけです。このような呼び出し構文を使用する方法はありますか?引数はペア間またはペア内で同じではありません。
'arg1a'、' arg1b'、 'arg2a'、' arg2b'、...はすべて異なるタイプですか? – NathanOliver
うん。私の場合、それらはすべてQt接続のメンバー関数ポインタですが、各関数は異なる引数を取ることができます – TheLoneMilkMan
OK。 AFAIKには、これを行う方法がありません。 '{arg1a、arg1b}'には型がないので、推論できません。 – NathanOliver