int main(int, char **) {
int variable = 21;
int array[1] = {21};
using ArrayOf1Int = int[1];
(*reinterpret_cast<ArrayOf1Int *>(&variable))[0] = 42;
*reinterpret_cast<int *>(&array) = 42;
return 0;
}
我刚刚违反了严格别名规则吗?
或者,就像这个评论引导我提出这个问题:一个变量是大小为1的数组吗?
请注意,我将此标记为语言律师问题。因此,我不关心-fno-strict-aliasing
或编译器特定的行为,而是关心标准中所说的内容。同时,我认为了解这个问题在C++03、C++11、C++14和更新版本中是否以及如何改变也很有趣。
decltype
和这有什么关系?你能把问题整理一下,只涉及数组吗? - Kerrek SBdecltype
与实际问题无关(如果这让您产生了误导,我很抱歉),而是与我的失败有关,即未正确指定类型(“指向1个int数组的指针”)。 - Daniel Jourusing A = T[1];
- Kerrek SB