阵列如何提供存储空间?

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::arraystd::array 不是一个数组,而是一个 class 模板。 std::array 可能包含一个数组作为成员。

array(带有表示代码的格式)指的是 std::array.

What would happen if it was just a char array and not a unsigned char array?

严格的解释是没有其他类型可以为另一个对象“提供存储”,除非由另一个规则指定。

一个宽松的解释是其他类型可以提供存储,并且遵循引用规则的条件不适用于它们。