次のコードが与えられます:
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参照の集約初期化については何も述べていません(少なくとも私が見つけることはできません)。
それでは、この不特定の動作ですか?