【发布时间】:2016-01-30 17:20:27
【问题描述】:
考虑以下 C++ 代码:
struct A {A(int);};
A foo() {return static_cast<A>(0);}
A x = foo();
这里static_cast<A>(0)按照标准[5.2.9-4]创建一个临时对象,它是一个prvalue。标准 [12.2-1] 说
类类型的临时对象在各种上下文中创建:将引用绑定到纯右值 (8.5.3)、返回纯右值 (6.6.3)、创建纯右值的转换 (4.1、 5.2.9, 5.2.11, 5.4),抛出异常 (15.1),进入处理程序 (15.3),以及在某些初始化中 (8.5)。
那么return语句会再次创建一个临时对象吗?
顺便问一下,谁能告诉我标准是否保证隐式类型转换会创建一个临时对象?
【问题讨论】:
标签: c++ return type-conversion temporary-objects