ARTICLE AD BOX
Under https://eel.is/c++draft/intro.object#16 (see below) does the creation of a std::array of std::byte or unsigned char implicitly create objects?
Except during constant evaluation, an operation that begins the lifetime of an array of unsigned char or std::byte implicitly creates objects within the region of storage occupied by the array.
[Note 5: The array object provides storage for these objects. — end note]
Except during constant evaluation, any implicit or explicit invocation of a function named operator new or operator new[] implicitly creates objects in the returned region of storage and returns a pointer to a suitable created object.
Besides can they provide storage?
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
the lifetime of e has begun and not ended, and the storage for the new object fits entirely within e, and there is no array object that satisfies these constraints nested within e.I'm not aware of any std::array implementation which is not using internally a plain array but https://eel.is/c++draft/sequences#array does not seem to mandate that. The closest to the existence of this array is hinted by the data() member that guarantees that pointer arithmetic is valid:
Returns: A pointer such that [data(), data() + size()) is a valid range.
