58 votos

¿WTF es WTF? (en base de código de WebKit)

He descargado el Cromo's de la base de código y corrió a través de la WTF espacio de nombres.

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

¿Eso significa lo que creo que significa? Podría ser así, la bitwise_cast de ejecución especificado aquí no se compilará si cualquiera TO o FROM no es una VAINA y no es (AFAIK) más poderoso que el de C++, construido en reinterpret_cast.

El único punto de luz que yo veo aquí es el que nadie parece estar utilizando bitwise_cast en el Cromo del proyecto.

47voto

ismail Puntos 19146

Su diminutivo Web Tplantilla Framework, proporciona funciones utilizadas en todo el código de WebKit.

4voto

Stan Puntos 41

Es para evitar el problema de optimización strict-aliasing:

http://stackoverflow.com/Questions/2906365/GCC-STRICT-aliasing-and-Casting-through-a-Union

2voto

Artyom Puntos 17387

Podría ser así, la aplicación de bitwise_cast especificados aquí los rendimientos comportamiento indefinido si a o desde no es una vaina

Si FROM o TO no es tipos de POD, fallaría la compilación con el actual estándar de C++ porque no serías capaz de ponerlos en la Unión.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X