如何调用一个可变参数函数中的所有参数std :: forward?
我只是写了一个通用的对象工厂,并使用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,我还没有到那里。 有一个更快的语法可以工作吗?
你会做:
template <typename ...Params> void f(Params&&... params) { y(std::forward<Params>(params)...); }
...
几乎说:“拿走左边的东西,并为每个模板参数,相应地解压缩。