Например, вам может подойти aggregate initialization:
T array[10] = {};
Согласно документации (перевод мой, нерелевантный текст пропущен):
Результат aggregate initialization (в нашем случае, инициализации всего массива):
- Если [...] список инициализации пуст, [...] элементы инициализируются [...] пустыми списками, что означает value initialization.
Результат value initialization (в нашем случае, инициализации элементов массива):
- Если тип
T есть класс без конструктора по умолчанию, с пользовательским конструктором по умолчанию или с удалённым class конструктором по умолчанию, происходит default initialization.
- Если тип
T есть класс с конструктором по умолчанию, который не является ни пользовательским, ни удалённым (то есть, это может быть класс с неявно созданным конструктром по умолчанию или созданным при помощи = default), происходит zero initialization, а затем, если у него нетривиальный конструктор по умолчанию, default initialization (то есть, вызов этого конструктора).
- Если тип
T сам по себе массив, у его элементов рекурсивно происходит value initialization.
- В противном случае, у объекта происходит zero initialization.
И наконец, default initialization:
- Если тип
T есть класс, выбирается конструктор, соответствующий пустому списку аргументов. Этот конструктор (он будет одним из конструкторов по умолчанию) исполняется.
- Если
T сам по себе массив, для каждого элемента применяется рекурсивно default initialization.
- В остальных случаях ничего не происходит. Значения, с которыми инициализируется объект, не определены.
Таким образом, для массива объектов класса с конструктором по умолчанию произойдёт цепочка aggregate initialization массива → → value initialization элементов массива → default initialization элементов массива → конструктор по умолчанию.
Все эти данные, написанные ещё более сухим языком, вы можете найти и в стандарте.
Финальный совет (важно!): убедитесь, что компилятор, которым вы пользуетесь, соответствует стандарту. Компиляторы вполне могут не очень хорошо поддерживать стандарт. Особенно это касается немейнстримных компиляторов.
#ifdef-ов и не ленитесь писать хорошиеconfigure. А главное, тщательно тестируйте свой код для всех обещанных Вами платформ. – avp Oct 24 '15 at 16:41