我刚刚在编写一个通用对象工厂,并使用boost预处理器元库来制作可变参数模板(使用2010年的版本,它不支持它们)。我的函数使用右值引用和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,但我还没有完全掌握。是否有更快的语法可以使用?
void f(Params&& ...params)
。 - UncleBensvoid f(Ar&& ...arg)
。 (注: Talk Like a Pirate Day是每年9月19日庆祝的节日,人们在这一天模仿海盗的语言和行为举止。void f(Ar&& ...arg)
是一段C++代码,涉及到可变参数模板函数的声明。) - woolstar