【发布时间】:2012-11-08 00:44:22
【问题描述】:
可能重复:
Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?
我使用chars 中的std::array 来保存未知原始类型的值,其长度不超过 10 个字节,如下所示:
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
我已经读过通过char * 来回转换不是未定义的,因为编译器假定char * 可以为任何类型的值设置别名。当值被放置在(我假设是)对象内的chars 数组中时,这仍然有效吗?
注意:我知道我可以在这里使用联合,但这会导致我正在做的事情有大量的样板代码,如果有必要我想避免它,因此这个问题。
【问题讨论】:
-
不同的问题,相同的答案。
-
同一个问题,不同的词。 ;-]
标签: c++ c++11 undefined-behavior