Является ли базовое представление бит для std::array<T,N> v и a T u[N] тем же?
Другими словами, безопасно ли скопировать N*sizeof(T) байты от одного к другому? (Либо через reinterpret_cast, либо memcpy.)
Edit:
Для пояснения акцент делается на том же представлении бит и reinterpret_cast.
Например, предположим, что у меня есть эти два класса над некоторым тривиально-скопируемым типом T для некоторого N:
struct VecNew {
std::array<T,N> v;
};
struct VecOld {
T v[N];
};
И есть устаревшая функция
T foo(const VecOld& x);
Если представления одинаковы, то этот вызов безопасен и позволяет избежать копирования:
VecNew x;
foo(reinterpret_cast<const VecOld&>(x));