上一篇文章指出rvalue引用只能绑定到非const rvalues: Difference between returning a const reference and rvalue reference
但是,如果这是真的,perfect forwarding如何运作?
对于perfect forwarding的定义:
template <typename T, typename A1, typename A2>
T* factory(A1&& a1, A2&& a2)
{
return new T(std::forward<A1>(a1), std::forward<A2>(a2));
}
工厂函数似乎可以采用任何类型的数据:const lvalue,lvalue,rvalue。
(PS似乎rvalue引用可以做所有事情,但我很少看到其他人使用它编写的代码,为什么不呢?似乎函数参数的rvalue引用不仅可以执行左值引用可以做的事情而且还可以提高效率避免不必要的副本)