Vida útil de un enlace temporal agregado al miembro de estructura inicializado

Dado el siguiente código:

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 que esto puede crear referencias colgantes cuando se usa como un nuevo inicializador, pero no dice nada (al menos nada que pueda encontrar) sobre la inicialización agregada de referencias constantes con temporales.

Es este comportamiento no especificado entonces?

Respuestas a la pregunta(2)

Su respuesta a la pregunta