换句话说,只要有通用引用类型的模板函数,就应该在使用运算符和表达式之前使用std::forward,否则可能会复制对象。callBar( T && a ) std::forward< T >( a ).bar();{ std::cout<<"\n1"<<std::endl,输出为:constrdestr
constr
mov
=> copy and move // ops and exprs using std::forward<T>(param)重点是,当我们引用一个右值时,我们知道我们有一个右值,所以我们应该std::move它,以保留它是一个右值的事实。当我们获取一个通用引用(T&&,其中T是一个推导类型)时,我们希望std::forwar