一 左值和右值
lvalue = rvlaue
class A a = A();
这个里面 a是左值,A()就是右值
二 ref-value qualifier.
struct X
{
//can be invoked on lvalue
void f() & { std::cout << "f() &" << std::endl; }
//can be invoked on rvalue
void f() && { std::cout << "f() &&" << std::endl; }
};
X x;
x.f(); //invokes the first function
//because x is a named object, hence lvalue
X().f(); //invokes the second function
//because X() is an unnamed object, hence rvalue
输出:
f() &
f() &&