Ответ 1
Вот некоторые документы, относящиеся к проблеме:
http://en.cppreference.com/w/cpp/language/aggregate_initialization
В С++ 11 ваш код является недействительным. В С++ 14 снова верен.
В С++ 11 добавление инициализации по умолчанию предотвращает действительность действительного init. В С++ 14 это не так.
Способом решения вашей проблемы в С++ 11 было бы написать конструктор со значением для значения a и b со значением по умолчанию.