При наличии инициализации нестатических элементов данных при декларации ваш класс больше не совокупность (см. 8.5.1 Совокупностей [decl.init.aggr] ).
Работа должна добавить конструктора с двумя параметрами. Это позволяет вам использовать инициализацию списка инициализатора, которая позволяет тот же самый синтаксис как совокупная инициализация, даже если ваш класс не технически совокупность.
struct X {
X(int x, int y) : x(x), y(y) {}
int x = 1;
int y = 1;
};
int main()
{
X x1{1, 2};
X x2 = {1,2};
}
Note: These rules have been relaxed for C++1y, meaning your type would indeed be an aggregate.