题
我下载了 Chromium 的代码库并遇到了 WTF名称空间。
namespace WTF {
/*
* C++'s idea of a reinterpret_cast lacks sufficient cojones.
*/
template<typename TO, typename FROM>
TO bitwise_cast(FROM in)
{
COMPILE_ASSERT(sizeof(TO) == sizeof(FROM), WTF_wtf_reinterpret_cast_sizeof_types_is_equal);
union {
FROM from;
TO to;
} u;
u.from = in;
return u.to;
}
} // namespace WTF
这是否意味着我认为这意味着什么?可能是这样,如果 TO
或 FROM
不是 bitwise_cast 实现将无法编译en.wikipedia.org/wiki/Plain_Old_Data_Structures“rel =”noreferrer“> POD 并不是(AFAIK)比 reinterpret_cast
中内置的C ++更强大。
我在这里看到的唯一亮点就是没人似乎在Chromium项目中使用 bitwise_cast
。
解决方案
W eb T 强制 F ramework的缩写,并在整个WebKit代码库中提供常用功能。
其他提示
避免严格别名优化问题:
可能是这样,如果TO或FROM不是POD,则此处指定的bitwise_cast实现会产生未定义的行为
如果FROM或TO不是POD类型,则编译将失败并使用当前的C ++标准 因为你无法将它们联合起来。
不隶属于 StackOverflow