c++ - 我可以对临时使用右值引用吗?它是未定义的行为吗?

标签 c++ c++11 language-lawyer undefined-behavior rvalue-reference

更新问题Why this two rvalue references examples have different behavior? :

源代码:

int a = 0;
auto && b = a++;
++a;
cout << a << b << endl;

打印 20

a++ 调用之后使用 b 是否是未定义行为 (UB)?也许我们不能使用 b 因为它指的是临时的?

最佳答案

代码很好。 b 指的是一个生命周期扩展的对象,它是表达式 a++ 的结果,它与 a 是不同的对象。 (将临时对象绑定(bind)到引用可将对象的生命周期延长到引用的生命周期。)您可以使用和修改这两个对象。

关于c++ - 我可以对临时使用右值引用吗?它是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315826/

相关文章:

c++ - 具有 3 个线程的多线程程序,可打印数字序列

c++ - 如何在没有数学函数(arctan)的情况下计算点和 org(0,0) 之间的快速角度(最接近八个提供值之一)?

使用 lambda 的 c++11 排序列表

显式类型转换(C 风格转换)的 C++ 转换符号和 static_cast 的多种解释

c++ - 函数重载 : empty parameter list vs parameter pack

c++ - 针对库的静态链接实际上做了什么?

c++ - while cin.get 在从文件加载时导致无限循环

c++ - 只允许传递指向新对象的指针

c++ - 标准布局 c++

c++ - 结构化绑定(bind)是否可重用?