【发布时间】:2015-01-15 11:15:12
【问题描述】:
在使用基于范围的循环进行编程时假设我当前的规则说
尽可能使用
for(auto const &e :...)或for(auto &e:...),而不是for(auto a: ...)。
我基于我自己的经验和this question 举例。
但是在阅读了新的terse for loops 之后,我想知道,我不应该用&& 替换我的规则中的& 吗?正如here 所写,这看起来像Meyers' Universal References。
所以,我问自己,我的新规则是否应该是
尽可能使用
for(auto const &&e :...)或for(auto &&e:...)...
或者这并不总是有效,因此应该是相当复杂的一个
检查
for(auto const &&e :...)或for(auto &&e:...)是否可行,然后考虑for(auto const &e :...)或for(auto &e:...),仅在需要时不要使用引用。
【问题讨论】:
-
auto &&始终有效。这就是为什么它是“通用的”。如有必要,推导的类型将被限定。 -
const auto&&不是转发引用,它是 const 右值引用 -
@Bulletmagnet 在CppCon'14期间是STL
-
@PiotrS。坎宁安定律指出“在互联网上获得正确答案的最佳方式不是提出问题,而是发布错误的答案。”
标签: c++ c++11 for-loop universal-reference forwarding-reference