std::array 大小和内存布局的保证语义
在 C 11 中,std::array 提供的连续存储和性能与常规数组。然而,标准对 std::array 的要求提出了一个问题:它是否一定具有与等效数组相同的大小和内存布局?
根据 C 标准的 §23.3.2.1/2,std: :array 是使用初始值设定项列表初始化的聚合。由于聚合不能使用构造函数来转换数据,因此初始化列表必须直接表示存储在数组中的值。
这意味着 std::array 的大小必须由其中指定的元素数量确定模板参数。此外,内存布局应与数组的内存布局相同,没有任何辅助数据或填充。
虽然标准没有明确说明此要求,但 std::array 的聚合性质强烈暗示了这一要求以及连续存储的要求。
这意味着 sizeof(std::array
实际上,编译器和实现通常会遵循这种预期行为。然而,值得注意的是,该标准并未严格执行,因此存在不合规实施的可能性。
以上是`std::array` 是否保证与常规 C 数组具有相同的大小和内存布局?的详细内容。更多信息请关注PHP中文网其他相关文章!