安全地初始化一个 std::array 的布尔值

问题描述

鉴于此数组声明和初始化:

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

我可以假设数组中的所有元素总是被初始化为 false,还是明确地初始化更好?

解决方法

保证用 false 值填充。

std::array 是一个聚合,因此它没有用户定义的构造函数,因此 value-initializing 它执行 zero-initialization


但是如果您删除 {}(将其转换为默认初始化),元素将未初始化。

,

文档说:“默认初始化可能会导致非类 T 的值不确定”。所以,看来你不能假设它会被初始化。