92

我下载了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

这是否意味着我认为的意思?可能是这样,如果不是POD并且不是(AFAIK)比内置的 C++ 更强大,bitwise_cast则此处指定的实现将无法编译。TOFROMreinterpret_cast

我在这里看到的唯一亮点是 Chromium 项目中似乎没有人使用bitwise_cast

4

3 回答 3

84

它是 Web T emplate F ramework 的缩写提供整个WebKit 代码库中的常用功能。

于 2009-05-07T12:00:42.340 回答
5

这是为了避免严格混叠优化问题:

gcc、严格混叠和通过联合进行强制转换

于 2010-06-10T17:24:57.017 回答
2

可能是这样,如果 TO 或 FROM 不是 POD,此处指定的 bitwise_cast 实现会产生未定义的行为

如果 FROM 或 TO 不是 POD 类型,则使用当前 C++ 标准编译将失败,因为您无法将它们合并。

于 2009-05-07T11:56:31.213 回答