我只是编写一个通用对象工厂并使用boost预处理器元库来创建一个可变参数模板(使用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,我也不是那里 . 是否有更快的语法可行?
1 回答
你会这样做:
...
几乎说"take what's on the left, and for each template parameter, unpack it accordingly."