如何将一个呼叫标准::向前所有参数的可变参数函数?
-
26-09-2019 - |
题
我只是写一个通用的对象工厂和使用升压预处理元库提一个可变参数模板(使用2010年和它不支持他们)。我的函数使用RVAL引用和std::forward
做完美转发,它让我思考......当的C ++ 0x出来,我有一个标准的编译器我会与真正的可变参数模板做到这一点。如何不过,我会打电话std::forward
上的争论?
template <typename ...Params>
void f(Params... params) // how do I say these are rvalue reference?
{
y(std::forward(...params)); //? - I doubt this would work.
}
我唯一能想到的办法将需要...... PARAMS人工拆包,我还没有应用任何。是否有一个更快的语法,将工作?
解决方案
您会做:
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
在...
几乎说“采取什么样的左边,并为每个模板参数,因此解压。”
不隶属于 StackOverflow