Jam*_*lis 7

swap()对a进行非const引用vector<int>.非const引用不能绑定到rvalue(临时对象).对按函数返回的函数(如f)的调用是一个右值.

有效的原因f(x).swap(v)是因为在里面std::vector<int>::swap,返回的临时对象f(x)可以this用来引用自身. this不是左值.

  • @yoyo:即在所讨论的[为什么一个非const引用不能结合到临时对象?](http://stackoverflow.com/questions/1565600/how-come-a-non-const-reference-cannot-绑定到临时对象)(特别是sbi的答案) (4认同)