WTF это WTF? (в базе кода WebKit) - PullRequest
86 голосов
/ 07 мая 2009

Я скачал кодовую базу 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

Значит ли это, что я думаю? Возможно, указанная здесь реализация bitwise_cast не будет компилироваться, если TO или FROM не является POD и не является (AFAIK) более мощным, чем встроенный в C ++ reinterpret_cast.

Единственная точка света, которую я вижу здесь, это то, что никто не использует bitwise_cast в проекте Chromium.

Ответы [ 3 ]

78 голосов
/ 07 мая 2009

Это сокращение от W eb T emplate F ramework и предоставляет часто используемые функции по всей базе кода WebKit.

5 голосов
/ 10 июня 2010

Во избежание проблемы оптимизации со строгим псевдонимом:

gcc, строгое наложение и приведение через объединение

2 голосов
/ 07 мая 2009

Может быть так, реализация bitwise_cast, указанная здесь, дает неопределенное поведение, если TO или FROM не POD

Если FROM или TO не являются POD-типами, компиляция завершится с текущим стандартом C ++ потому что вы не сможете соединить их.

...