Безопасная инициализация массива std:: bools?
Учитывая это объявление массива и инициализацию массива:
std::array<bool, 20> invalid_params{};
Могу ли я предположить, что все элементы в массиве всегда будут инициализированы значением false, или лучше сделать это явно?
2 ответа
Решение
Это гарантированно будет заполнено
false
значения.
std::array
является агрегатом, поэтому у него нет определяемых пользователем конструкторов, поэтому при инициализации значения выполняется инициализация нуля .
Но если убрать
{}
(превращая его в инициализацию по умолчанию), элементы будут неинициализированы.
В документации говорится: «Инициализация по умолчанию может привести к неопределенным значениям для некласса T». Итак, похоже, нельзя предполагать, что он будет инициализирован.