Arm*_*yan 9 c++ stl list rvalue lvalue
end()返回一个过去的迭代器的副本,对吗?list.end()是一个右值,对吧?怎么会这样呢
std::list<int> lst;
// ...
--l.end();`
Run Code Online (Sandbox Code Playgroud)
编译?
正确指出,我的第三点不一定正确.但那么这个代码又如何编译呢?
struct A{};
void f(A&)
{
}
A a()
{
return A();
}
int main()
{
f(a());
}
Run Code Online (Sandbox Code Playgroud)
Naw*_*waz 12
- 为列表迭代器重载的 - operator-function采用非const引用,对吧?
这一点是错误的.的operator--是一个成员函数和成员函数可以在临时被调用.您不会将任何对象作为参数传递给此成员函数.因此,首先不会出现将rvalue绑定到非const引用的问题.
作为用于编辑(通过右值到f(A&){}),这是一个非标准扩展.我猜你正在使用微软编译器,因为我知道它有这个非标准的扩展,在我看来是愚蠢的.
| 归档时间: |
|
| 查看次数: |
217 次 |
| 最近记录: |