0
我有一個可變參數函數爲每個參數調用一個函數。有沒有辦法將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)
{
}
如果我調用該函數與Call(2, 2)
它會調用PushArg<int>(2)
兩次,然後調用Call()
。但我需要能夠撥打PushArg
,但沒有價值。
我想要做的是做Call(2, void, 4)
,並讓它叫PushArg<int>(2)
,PushArg<void>()
,然後PushArg<int>(4)
。
目前我有一個「空」類,只存在允許我傳遞一個沒有值的值,但它使得調用該函數很笨拙。正在做我所描述的(或類似的事情)嗎?
不,你不能讓C++'void'充當這一角色。你需要使用佔位符。 –
在可變參數調用函數中使用的'arg'在哪裏定義? –
@ Cheersandhth.-Alf你能解釋一下你在問什麼嗎?我不得不大量修改原始代碼以使其更小,更易讀,所以我可能會意外地忽略了一些重要的東西。 – user112513312