我下载了Chromium的代码库,并浏览了WTF namespace。
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
这是否意味着我认为这意味着什么?可能是这样,如果bitwise_cast
或TO
不是POD而不是(AFAIK)比{C}内置的C ++更强大,则此处指定的FROM
实现将无法编译{1}}。
我在这里看到的唯一亮点就是没有人在Chromium项目中使用reinterpret_cast
。
答案 0 :(得分:78)
W eb T 强制 F ramework的缩写,并在整个WebKit代码库中提供常用功能。
答案 1 :(得分:5)
答案 2 :(得分:2)
可能是这样,如果TO或FROM不是POD,则此处指定的bitwise_cast实现会产生未定义的行为
如果FROM或TO不是POD类型,则编译将失败并使用当前的C ++标准 因为你无法将它们联合起来。