我使用 a std::array
of char
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 *
不是未定义的,因为编译器假定 achar *
可以为任何类型的值取别名。当值被放置在(我假设是)char
对象内的 s 数组中时,这仍然有效吗?
注意:我知道我可以在这里使用联合,但这会导致我正在做的事情有大量的样板代码,如果有必要我想避免它,因此这个问题。