- list 会
end()
返回一个过去的迭代器的副本,对吗? - 因此,
list.end()
是一个右值,对吧? - 为列表迭代器重载的 -- 运算符函数采用非常量引用,对吗?
- 您不能将右值绑定到非常量引用,对吗?
那么怎么会
std::list<int> lst;
// ...
--l.end();`
编译?
正如正确指出的那样,我的第三点不一定是正确的。但是,这段代码也可以编译呢?
struct A{};
void f(A&)
{
}
A a()
{
return A();
}
int main()
{
f(a());
}