假设我有一个std::array<T, n>
并且想要对其内容(即非公开的elems
数组成员)进行数组引用。
我很惊讶地发现std::array<T, n>::data()
returnT *
而不是T (&)[n]
,所以似乎某种演员表是必要的。我可以写:
std::array<int, 5> arr;
int (&ref)[5] = *reinterpret_cast<int (*)[5]>(arr.data());
但是,这看起来很丑陋并且可能不安全。它是合法的(定义明确的)代码吗?有没有更好的方法来做到这一点?