Безопасность агрегированной инициализации в C ++

Предположим, у меня есть следующая структура:

struct sampleData
{
       int x;
       int y;
};

И при использованииЯ хочу инициализировать переменные типа sampleData в известное состояние.

sampleData sample = { 1, 2 } 

Позже я решаю, что мне нужны дополнительные данные, хранящиеся в моей структуре sampleData , а именно:

struct sampleData
{
       int x;
       int y;
       int z;
};

It Насколько я понимаю, инициализация двух полей, оставшаяся от моей структуры данных до z , все еще является допустимым оператором и будет скомпилирована., заполняя отсутствующие поля значениями по умолчанию.

Верно ли это понимание? Недавно я работал в Ada, который также позволяет агрегатную инициализацию, но при этом помечает аналогичную проблему как ошибку компиляции. Предполагая, что мои предположения о приведенном выше коде C ++ верны, существует ли языковая конструкция, которая распознала бы отсутствующие значения инициализации как ошибку?

8
задан Greg 8 June 2011 в 20:00
поделиться