Lifetime de ligação temporária para agregar membro struct inicializado

Dou o seguinte 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;
}

a saída é:

~bar()
~zab()
done!

C ++ 0x possui uma cláusula que determina que isso pode criar referências pendentes quando usado como um novo inicializador, mas não diz nada (pelo menos nada que eu possa encontrar) sobre a inicialização agregada de referências const com temporário

Esse comportamento não especificado é então?

questionAnswers(2)

yourAnswerToTheQuestion