Sec。5.4/1 N3797说:
如果T是左值引用类型或右值,则结果为左值如果T是右值引用,则引用函数类型和xvalue到对象类型。
这是什么意思?我知道什么是左值表达式。我一直试图在Standard中找到左值引用类型定义,但我做不到。你能提供吗?
术语左值引用表示其中有一个&
的引用,例如:
int &x = whatever;
int const &y = whatever;
在C++03中,左值引用是唯一的引用类型。在C++11中,增加了右值引用,因此反义词左值引用被创造用于表示非右值引用。
左值引用既可以绑定到左值也可以绑定到右值(有关于非常量左值引用不能绑定到临时对象的限制(;右值引用只能绑定到右值。
注意:通用引用可能绑定到左值或右值,绑定后它们的行为要么像左值引用,要么像右值引用。
The C++ Programming Language 4th Edition
中描述了两种类型的lvalue reference
,如下所示,
non-const
lvalue reference
是指引用的用户可以写入的对象const
lvalue reference
指的是一个常量,从引用用户的角度来看,它是不可变的
此外,
rvalue reference
指的是一个临时对象,引用的用户可以(通常也会(修改该对象,假设该对象将不再使用