Dado el siguiente código:Lifetime de límite temporal a agregarse inicializa struct miembro de
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;
}
la salida es:
~bar()
~zab()
done!
C++ 0x tiene una cláusula que dicta esto puede crear colgando referencias cuando usado como un nuevo inicializador, pero no dice nada (al menos nada que pueda encontrar) sobre la inicialización agregada de las referencias de const con los temporales.
¿Este comportamiento no especificado está entonces?
C++ 11 no existe todavía. Tal vez te estás refiriendo a C++ 0x FDIS. –
@Tomalak, corregido. Lo vi en otro lado y me hizo cosquillas en el cerebro. – MSN
@MSN: suficiente;) –