在std :: array类型之间进行转换

时间:2014-07-06 13:17:39

标签: c++ arrays c++11

我一直在玩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的所有实现(当然,只要你不转换为更长的数组)。

这实际上是安全的吗?如果没有,会出现什么问题?

如果事实证明是安全的,那么有没有办法对阵列的后半部分进行操作?

0 个答案:

没有答案