1

cppreference 说:当引用绑定到纯右值时会创建一个临时对象。它们是指 const 左值引用和右值引用吗?:

临时对象在prvalue被具体化时创建,以便它可以用作glvalue,这在以下情况下发生(自C++17起):

  • 绑定对纯右值的引用

如果他们的意思是,右值引用和 const 左值引用绑定到相同类型的纯右值会创建一个临时值吗?我的意思是,这是否正在发生:

const int &x = 10; // does this creates temporary?

int &&x2 = 10; // does this creates temporary?
4

1 回答 1

4

唯一允许绑定到对象右值(包括纯右值)的引用是右值引用和constvolatile左值引用。当这样的绑定发生在一个纯右值上时,一个临时对象就被物化了。因此,在 OP 的两个示例中都发生了临时物化:

const int &x = 10;
int &&x2 = 10;

x超出范围时,第一个临时(值为 10)将被销毁。第二个临时值(也为 10,尽管它的值可以使用 修改x2)将在x2超出范围时被销毁。

于 2022-02-15T01:02:16.487 回答