我一直在玩std :: array,虽然我实际上并不想这样做,但我发现以下内容似乎有效 - 至少在我的测试中:
void f(std::array<int,5>& x); //function doing stuff on an array of length 5
std::array<int,10> a;
//do some stuff with a
f(*reinterpret_cast<std::array<int,5>*>(&a)); //apply f to first half of a
//...
不可否认,乍一看这看起来很危险。但是,我可以想象它将适用于std :: array的所有实现(当然,只要你不转换为更长的数组)。
这实际上是安全的吗?如果没有,会出现什么问题?
如果事实证明是安全的,那么有没有办法对阵列的后半部分进行操作?