Inicializador uniforme usado no argumento padrão para const const
Essa sintaxe legal é 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>() );
}
Por esse motivo, encontrei um bug no GCC 4.
O erro que recebo é:
error: expressão primária esperada antes do token '{'
que é ... lógico ... se fosse ilegal.
ATUALIZAR Como o @Kerrek ilustrou, isso ocorre no C ++ 03 simples, com agregados e a sintaxe antiga de inicialização entre chaves. Por que isso não é possível? É proibido no Padrão? Ou os compiladores estão com defeito? Ou isso é um descuido? Não vejo nenhum problema sério ao permitir isso como uma alternativa para chamar explicitamente o construto