我只是写一个通用的对象工厂和使用升压预处理元库提一个可变参数模板(使用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)...);
}

...几乎说“采取什么样的左边,并为每个模板参数,因此解压。”

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top