引用如何绑定到prvalues



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

当一个prvalue被物化时,会创建临时对象,以便将其用作glvalue,这在以下情况下发生(自C++17以来(:

  • 绑定对prvalue的引用

如果它们的意思是,绑定到相同类型的prvalues的右值引用和常量左值引用是否会创建临时的?我的意思是,这种情况正在发生吗:

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

唯一允许绑定到对象右值(包括prvalue(的引用是右值引用和constvolatile左值引用。当prvalue发生这种绑定时,临时对象被物化。因此,临时物化出现在OP的两个例子中:

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

x超出范围时,第一个临时(值为10(将被销毁。当x2超出范围时,第二个临时(也具有值10,尽管其值可以使用x2修改(将被销毁。

最新更新