Ast*_*isk 19 c++ perfect-forwarding auto c++11 c++14
虽然T&&与模板一起使用作为转发参考或通用引用(如Scott Meyers所称),但我auto&&在代码示例中看到了一些博客.我认为auto自己应该足够了,然而,CbCon 2014中的 Herb Sutter 说:永远不要auto&&用于局部变量
这是为什么?
看到所有回复,我觉得我应该问对方.尽管有一般编码指南,但是在函数体内使用auto &&以获得代码正确性和可维护性是有任何好的用例.
在某些情况下,当您需要auto&&本地人时,请考虑:
vector<bool> vb { true, false, true };
for( auto&& b : vb )
b = !b;
Run Code Online (Sandbox Code Playgroud)
在这里,aauto&不行。(如果vector<bool>是专门的)
然而,与类型推导(即转发引用)一起使用的通常原因&&是因为您不知道或不关心确切的类型,您只是要转发它。
“通用引用”一词有点误导,您不应该普遍使用它,因此它的名称更改为“转发引用”
请注意,&&不与类型推导一起使用的是右值引用,这是完全不同的事情。