C++常量临时生命周期

Any*_*orn 7 c++

如果这样的代码是正确的(根据标准),你能告诉我:

struct array {
    int data[4];
    operator const int*() const { return data; }
};

void function(const int*) { ... }

function(array()); // is array data valid inside function?
Run Code Online (Sandbox Code Playgroud)

谢谢

Mik*_*our 12

是.临时对象有效,直到创建它的完整表达式结束; 也就是说,直到函数调用返回之后.

我手边没有我的标准副本,所以我不能给出确切的参考; 但它在C++ 0x最终草案的 12.2中.


Tyl*_*nry 6

是.Temporaries有效,直到创建它们的完整表达式结束.因此无名数组临时在function返回调用之前是有效的,因此其data成员也是如此.