Унифицированный инициализатор, используемый в аргументе по умолчанию для ссылки const

Это допустимый синтаксис 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>() );
}

Потому что, если это так, я только что обнаружил ошибку в GCC 4.6.

ошибка, которую я получаю:

ошибка: ожидаемое первичное выражение перед токеном '{'

, что ... логично ... если оно было незаконным.

ОБНОВЛЕНИЕ: Как проиллюстрировал @Kerrek, это перетекает в простой C ++ 03 с агрегатами и старым синтаксисом инициализации фигурных скобок для них. Почему это невозможно? Это запрещено в Стандарте? Или компиляторы виноваты? Или это оплошность? Я не вижу серьезных проблем в том, чтобы разрешить это как альтернативу явному вызову конструктора.

5
задан Johannes Schaub - litb 2 October 2011 в 10:34
поделиться