在C++中我应该使用auto&& x而不是auto& x吗?

问题描述 投票:0回答:1

我经常发现自己在做:

for(auto& v : cont) {...}

auto &r = GetValue();

现在工作中有人建议我们这样做:

for(auto&& v : cont) {...}

auto&& r = GetValue();

我想知道做其中一项是否比另一项有优势?

c++ forwarding-reference
1个回答
0
投票

我想知道做其中一项是否比另一项有优势?

它们不一样

auto& v
是一个左值参考。 由于它不是明确的
const
它只能绑定到其他左值。

auto&& v
转发参考(有时称为“通用参考”)。 它可以绑定到左值x值纯右值。 所有值。

  • 如果您希望代码始终能够编译,请使用
    auto&&
  • 如果由于某种原因,您需要编写代码,以便在分配的值不是左值时无法编译,请使用
    auto&
© www.soinside.com 2019 - 2024. All rights reserved.