【发布时间】:2019-12-11 13:23:49
【问题描述】:
通常我们会做这样的事情来定义多个采用相同参数包的可变参数函数:
template<typename ...Pack>
void func1(Pack... params);
template<typename ...Pack>
void func2(Pack... params);
template<typename ...Pack>
void func3(Pack... params);
template<typename ...Pack>
void func4(Pack... params);
有没有办法避免这种多余的重复?例如,类似:
template<typename ...Pack>
{
void func1(Pack... params);
void func2(Pack... params);
void func3(Pack... params);
void func4(Pack... params);
}
【问题讨论】:
-
这是为了避免打字还是您真的需要采用相同(与相同类型)参数包的函数?
-
您是否将此参数包限制为某些类型的子集或参数数量?如果不是,为什么这是个问题?
-
@DanielJour 后者。每个可变参数函数中的所有参数都将具有完全相同的类型——只有一种类型。
-
@MarekR 对不起,我不明白你的反对意见。
-
只是我(可能还有其他人)不明白什么是收益/目标。是否只是为了在定义此模板时为您节省打字?它对模板的使用方式有影响吗?
标签: c++ templates variadic-templates