我们有:
vector<int> f(int);
vector<int> v;
Run Code Online (Sandbox Code Playgroud)
这有效:
f(x).swap(v);
Run Code Online (Sandbox Code Playgroud)
这不是:
v.swap(f(x));
Run Code Online (Sandbox Code Playgroud)
为什么?
swap()对a进行非const引用vector<int>.非const引用不能绑定到rvalue(临时对象).对按函数返回的函数(如f)的调用是一个右值.
有效的原因f(x).swap(v)是因为在里面std::vector<int>::swap,返回的临时对象f(x)可以this用来引用自身. this不是左值.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |