相关疑难解决方法(0)

为什么我可以在 begin() 上使用赋值运算符,即使它是一个右值?

一段时间以来,我似乎无法解决这个特定问题。例如,如果我有以下代码:

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++

4
推荐指数
1
解决办法
110
查看次数

标签 统计

c++ ×1