请告诉我这些代码是否正确(根据标准):
struct array {
int data[4];
operator const int*() const { return data; }
};
void function(const int*) { ... }
function(array()); // is array data valid inside function?
谢谢
答案 0 :(得分:12)
是。临时对象有效,直到创建它的完整表达式结束;也就是说,直到函数调用返回。
我手边没有我的标准副本,所以我不能给出确切的参考;但它在C++0x final draft的12.2中。
答案 1 :(得分:6)
是。 Temporaries有效,直到创建它们的完整表达式结束。因此,在调用function
之前,无名数组临时有效,因此其data
成员也是如此。