【发布时间】:2014-08-24 04:18:10
【问题描述】:
clang 已开始从 n3994 实现 terse ranged-based for loops。通常在引入基于范围的 for 循环时,我们会看到 for (auto & v : vector) 形式的代码,以避免不必要的复制。似乎 n3994 提议 for (auto && v : vector) 在各方面都优越。我有几个问题:
- 后一种形式比前一种有什么优势?如果
auto &&明显有优势,为什么我们通常会选择auto &而不是auto &&? - 是否使新的基于范围的循环等效于
auto &&会破坏现有代码?它会对新代码产生实际影响吗? - 这不会向初学者介绍他们的代码实际上等同于
auto &&的问题吗?
【问题讨论】:
-
它不能破坏现有代码;现有语法不适合。
-
请注意,该提案“被厄巴纳的全体委员会拒绝。作者将进行修改。”