reinterpret_cast结构到固定大小的数组

reinterpret_cast structure to a fixed size array

我有一个结构 S,它将两个固定大小的 T 类型的数组打包在一起。

template<typename T>
struct S {
    array<array<T, 20>, 10> x1;
    array<T, 10> x2;
};

我想获取对大小为 210 的 T 类型元素的一维数组的引用。我尝试使用 reinterpret_cast,但编译器不会接受这个:

S<T> s;
array<T, 210>& x = *reinterpret_cast<S*>(&s);

我知道 有效:

  S<T> s;
  T* x = reinterpret_cast<T*>(&s);

但是有没有办法从该结构中获取对固定大小的一维数组的引用?我尝试使用 #pragma pack(pop, 1) 但没有成功。

reinterpret_cast<array<T, 210>&>(s) 应该这样做,如果那真的是你想要的。

它应该是明确定义的,因为这些是标准布局类型(假设 T 是)。但你如履薄冰