【发布时间】:2016-05-04 22:34:35
【问题描述】:
是否存在在 range-for 循环中使用 const&&
确实有意义的情况?
for (const auto && x : c) // ?
【问题讨论】:
标签: c++ c++11 for-loop constants rvalue-reference
是否存在在 range-for 循环中使用 const&&
确实有意义的情况?
for (const auto && x : c) // ?
【问题讨论】:
标签: c++ c++11 for-loop constants rvalue-reference
简答:否,const auto&&
在range-for loops
(或其他)中没有用处
如果您希望以优化的方式移动对象,您可以使用rvalue references
。除非您可以修改从中移动的对象,否则您不能这样做(通常)。所以const rvalues
(*) 没有实际用处(你不能离开它们,因为你不能修改它们)。
range-for loops
在关于const auto&&
的讨论中不要提出任何问题。
例如查看此 SO 帖子:Do rvalue references to const have any use?
const rvalue 引用的唯一用途是删除一些函数重载。这不适用于range-for loops
。
(*) 顺便说一下,const auto&&
是 const 右值引用,而不是转发引用。
【讨论】:
const auto &&
。我将其标记为答案,除非在另一个答案中出现了一些新的有趣想法。
T&&
推导出T
(或auto&&
)是一个转发参考。见isocpp.org/blog/2012/11/…