C ++常量临时生命周期

时间:2010-07-06 20:47:16

标签: c++

请告诉我这些代码是否正确(根据标准):

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

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

function(array()); // is array data valid inside function?

谢谢

2 个答案:

答案 0 :(得分:12)

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

我手边没有我的标准副本,所以我不能给出确切的参考;但它在C++0x final draft的12.2中。

答案 1 :(得分:6)

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