Нет, смежность в этом случае не гарантируется.
std::array
гарантированно является агрегатом и задается таким образом, что базовый массив, используемый для хранения, должен быть первым элементом данныхтип.
Однако не требуется, чтобы sizeof(array<T, N>) == sizeof(T) * N
, а также нет требования, чтобы в конце объекта не было байтов заполнения без имени, или что std::array
не имеет других элементов данных, кромебазовое хранилище массива.(Хотя реализация, включающая дополнительные элементы данных, в лучшем случае была бы необычной.)