阵列如何提供存储空间?
How can a array provide storage?
在C++ draft第一段讲的是数组提供存储的情况:
If a complete object is created ([expr.new]) in storage associated
with another object e of type “array of N unsigned char” or of type
“array of N std::byte” ([cstddef.syn]), that array provides storage
for the created object if:...
在这些情况下,数组是指 unsigned char C[1]
还是 std::array
?如果是第一种情况,我可以,例如,在现有数组 C 的相同内存地址处创建一个对象,然后这个数组 C 将 提供存储 ,但前提是它的类型是上面提到的?如果它只是一个 char
数组而不是 unsigned char
数组会怎样?
In these cases array is refering to an unsigned char C[1] or to std::array?
“数组”是指T[N]
.
等数组
“数组”不是指 std::array
。 std::array
不是一个数组,而是一个 class 模板。 std::array
可能包含一个数组作为成员。
array
(带有表示代码的格式)指的是 std::array
.
What would happen if it was just a char array and not a unsigned char array?
严格的解释是没有其他类型可以为另一个对象“提供存储”,除非由另一个规则指定。
一个宽松的解释是其他类型可以提供存储,并且遵循引用规则的条件不适用于它们。
在C++ draft第一段讲的是数组提供存储的情况:
If a complete object is created ([expr.new]) in storage associated with another object e of type “array of N unsigned char” or of type “array of N std::byte” ([cstddef.syn]), that array provides storage for the created object if:...
在这些情况下,数组是指 unsigned char C[1]
还是 std::array
?如果是第一种情况,我可以,例如,在现有数组 C 的相同内存地址处创建一个对象,然后这个数组 C 将 提供存储 ,但前提是它的类型是上面提到的?如果它只是一个 char
数组而不是 unsigned char
数组会怎样?
In these cases array is refering to an unsigned char C[1] or to std::array?
“数组”是指T[N]
.
“数组”不是指 std::array
。 std::array
不是一个数组,而是一个 class 模板。 std::array
可能包含一个数组作为成员。
array
(带有表示代码的格式)指的是 std::array
.
What would happen if it was just a char array and not a unsigned char array?
严格的解释是没有其他类型可以为另一个对象“提供存储”,除非由另一个规则指定。
一个宽松的解释是其他类型可以提供存储,并且遵循引用规则的条件不适用于它们。