Является ли этот допустимый синтаксис С++ 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 с агрегатами и старым синтаксисом инициализации фигурных скобок для них. Почему это невозможно? Стандартом это запрещено? Или виноваты компиляторы? Или это упущение? Я не вижу серьезных проблем в разрешении этого в качестве альтернативы явному вызову конструктора.