相关疑难解决方法(0)

临时绑定到聚合初始化struct成员的生命周期

给出以下代码:

class foo
{
};

class bar: public foo
{
public: 
    ~bar() { printf("~bar()\n"); }
};

class zab: public foo
{
public: 
    ~zab() { printf("~zab()\n"); }
};

struct foo_holder
{
    const foo &f;
};

int main()
{
    foo_holder holder[]= { {bar()}, {zab()} };
    printf("done!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

~bar()
~zab()
done!
Run Code Online (Sandbox Code Playgroud)

C++ 0x有一个子句规定这可以在用作新的初始化器时创建悬空引用,但它没有说明(至少我没有找到)有关临时引用的const引用的初始化.

这是不明确的行为吗?

c++ struct reference lifetime

12
推荐指数
1
解决办法
517
查看次数

标签 统计

c++ ×1

lifetime ×1

reference ×1

struct ×1