0

上一篇文章指出右值引用只能绑定到非 const 右值: 返回 const 引用和右值引用的区别

但是,如果这是真的,那么完美转发的工作原理是什么?

对于完美转发的这个定义:

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似乎右值引用可以做任何事情,但我很少看到其他人使用它编写代码,为什么不呢?似乎函数参数的右值引用不仅可以做左值引用可以做的事情,而且还可以通过避免不必要的副本来提高效率)

4

0 回答 0