自动引用和迭代器

Tom*_*Tom 3 c++ visual-c++ c++11

如果调用std :: vector :: begin()但将返回的迭代器分配给引用会发生什么?为什么它可以工作,迭代器值存储在哪里?

std::vector<int> v;
auto a = v.begin(); //I assume iterator is stored on the stack in variable "a".
auto& b = v.begin(); //What happens here?
Run Code Online (Sandbox Code Playgroud)

Vau*_*ato 7

这条线

auto& b = v.begin();
Run Code Online (Sandbox Code Playgroud)

是一个错误,因为v.begin()返回一个临时的,你不能将临时绑定到非const引用.

  • 由于它们对c ++的危险“扩展”,因此可能会在Microsoft编译器上进行编译。 (2认同)