私は、各引数に対して関数を呼び出すvariadic関数を持っています。私はそれが二回PushArg<int>(2)
を呼び出してから、Call()
を呼び出しますCall(2, 2)
で関数を呼び出す場合voidを引数として渡す方法はありますか?
void Call()
{
}
template<typename T>
void Call(T arg)
{
PushArg(arg);
Call();
}
template<typename T, typename ...Args>
void Call(T arg, Args... args)
{
PushArg(arg);
Call(std::forward<Args...>(args)...);
}
template<typename T>
void PushArg(T arg)
{
}
template<>
void PushArg<int>(int arg)
{
}
:
これは、次のようになります。しかし、私はPushArg
に電話する必要がありますが、価値はありません。
私ができることをやりたいことはCall(2, void, 4)
で、PushArg<int>(2)
、PushArg<void>()
、次にPushArg<int>(4)
としてください。
現時点では、値のない値を渡すことができる「null」クラスしかありませんが、関数を厄介なものに呼び出すことになります。私が記述したこと(または類似のもの)を可能にしていますか?
例
を提案します。プレースホルダを使用する必要があります。 –
variadicの 'Call'関数で使われている' arg'はどこに定義されていますか? –
@ Cheersandhth.-Alfあなたは何を求めているのか説明できますか?私はそれを小さく読みやすくするために元のコードを大きく変更しなければならなかったので、私は誤って何か重要なものを省いた可能性があります。 – user112513312