对临时声明的右值引用
rvalue reference to temporary declaration
E && e0 = E () ;
E e1 ;
这两种对象声明有什么区别吗? ;
在你的例子中:
E()
的结果是右值(准确地说是纯右值);
e0
是左值,类型为 E&&
(右值引用 E
);
e1
也是一个左值,类型为 E
;
e0
,通过绑定到 E()
的结果,将其生命周期从临时延长到自动。
因此,如果以下代码没有区分 E
和 E&&
(例如,decltype
会,但 auto
不会),它们将行为相同。
E && e0 = E () ;
E e1 ;
这两种对象声明有什么区别吗? ;
在你的例子中:
E()
的结果是右值(准确地说是纯右值);e0
是左值,类型为E&&
(右值引用E
);e1
也是一个左值,类型为E
;e0
,通过绑定到E()
的结果,将其生命周期从临时延长到自动。
因此,如果以下代码没有区分 E
和 E&&
(例如,decltype
会,但 auto
不会),它们将行为相同。