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