nicializador uniforme utilizado en argumento predeterminado para referencia constan

Es esta sintaxis legal de c ++ 0x?

class A
{
public:
    void some_function( const std::set<std::string> &options = {} );
    // note that this is legal, which binds the const reference to a temporary:
    void some_function( const std::set<std::string> &options = std::set<std::string>() );
}

Porque si es así, acabo de encontrar un error en GCC 4.6.

El error que obtengo es:

error: expresión primaria esperada antes de '{' token

que es ... lógico ... si fuera ilegal.

ACTUALIZAR Como ha ilustrado @Kerrek, esto se filtra en C ++ 03 simple, con agregados y la antigua sintaxis de inicialización de llaves para ellos. ¿Por qué esto no es posible? ¿Está prohibido en la Norma? ¿O son los compiladores los culpables? ¿O es esto un descuido? No veo ningún problema serio al permitir esto como una alternativa a llamar explícitamente al constructor.

Respuestas a la pregunta(1)

Su respuesta a la pregunta