可能重复:
Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?这是使用std :: array未定义的行为吗?
我使用char
的std::array
A S以保持未知原语类型,这是不超过10个字节长,像这样的一个值:
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
我读过那个来回穿越char *
不是你吗ndefined,因为编译器假定一个char *
可以别名任何类型的值。当这个值放在对象内部(我认为是)一个char
s的数组时,这仍然有效吗?
注意:我知道我可以在这里使用联合,但这会导致我正在做的大量样板代码,并且如果有必要,我想避免它,因此是问题。
不同的问题,相同的答案。 – Dan
同样的问题,不同的单词。 ; - ] – ildjarn