对临时声明的右值引用

rvalue reference to temporary declaration

E && e0 = E () ; 
E e1 ;

这两种对象声明有什么区别吗? ;

在你的例子中:

  • E() 的结果是右值(准确地说是纯右值);
  • e0 是左值,类型为 E&&(右值引用 E);
  • e1 也是一个左值,类型为 E;
  • e0,通过绑定到 E() 的结果,将其生命周期从临时延长到自动。

因此,如果以下代码没有区分 EE&&(例如,decltype 会,但 auto 不会),它们将行为相同。