一段时间以来,我似乎无法解决这个特定问题。例如,如果我有以下代码:
void foo(std::vector<int>::iterator &it) {
// ...
}
int main(){
std::vector<int> v{1,2,3};
foo(v.begin());
}
Run Code Online (Sandbox Code Playgroud)
我会得到编译错误:
initial value of reference to non-const must be an lvalue.
Run Code Online (Sandbox Code Playgroud)
我的猜测是我收到错误,因为a.begin()返回了一个右值。
如果是这样,以下表达式怎么可能起作用:
v.begin()=v.begin()++;
Run Code Online (Sandbox Code Playgroud)
如果v.begin()是右值?
c++ ×1