鉴于以下代码:寿命的临时结合的聚集初始化结构成员
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;
}
输出为:
~bar()
~zab()
done!
的C++ 0x具有指示此可以创建悬空引用时的条款用作一个新的初始化程序,但它没有说什么(至少没有我能找到)有关临时引用的const引用的聚合初始化。
那么这是不明确的行为呢?
C++ 11尚不存在。也许你指的是C++ 0x FDIS。 – 2011-04-19 16:35:53
@Tomalak,已更正。我在其他地方看到它,它让我的大脑发痒。 – MSN 2011-04-19 16:36:49
@MSN:够了;) – 2011-04-19 16:43:49