Безопасная инициализация массива std:: bools?

Учитывая это объявление массива и инициализацию массива:

      std::array<bool, 20> invalid_params{};

Могу ли я предположить, что все элементы в массиве всегда будут инициализированы значением false, или лучше сделать это явно?

2 ответа

Решение

Это гарантированно будет заполнено false значения.

std::arrayявляется агрегатом, поэтому у него нет определяемых пользователем конструкторов, поэтому при инициализации значения выполняется инициализация нуля .


Но если убрать {} (превращая его в инициализацию по умолчанию), элементы будут неинициализированы.

В документации говорится: «Инициализация по умолчанию может привести к неопределенным значениям для некласса T». Итак, похоже, нельзя предполагать, что он будет инициализирован.

Другие вопросы по тегам