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

91

Descargué el código base de Chromium y encontré el espacio de nombres 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

¿Significa esto lo que creo que significa? Podría ser así, la bitwise_castimplementación especificada aquí no se compilará si TOo FROMno es un POD y no es (AFAIK) más potente que C ++ integrado reinterpret_cast.

El único punto de luz que veo aquí es el que parece que nadie está usando bitwise_casten el proyecto Chromium.

Motti
fuente
4
Probablemente sea una buena idea citar la parte "SIN GARANTÍAS".
MSalters
@KennyTM, consulte meta.stackexchange.com/questions/45844/… para ver una discusión sobre cómo etiquetar esta pregunta
Earlz
Vaya, esa clase no se describe en "Web Template Framework". Es solo una abreviatura conveniente.
macetw

Respuestas:

81

Es la abreviatura de W eb T emplate F ramework y proporciona funciones de uso común en todo el código base de WebKit.

ismail
fuente
2
como en las plantillas de C ++ que hacen cosas comunes :)
ismail
alguna forma de clonar esa biblioteca?
Victor
Citas por favor. ¿Hace plantillas como Moustache o JSP?
adib
@adib No, la "plantilla" realmente se refiere a plantillas de C ++ y nada más. Consulte trac.webkit.org/wiki/SourceDirectory y webkit.org/blog/6161/locking-in-webkit (para fuentes de WebKit) y chromium.googlesource.com/chromium/src/+/master/third_party/… (para Blink fuente).
Timothy Gu
2

Podría ser así, la implementación bitwise_cast especificada aquí produce un comportamiento indefinido si TO o FROM no es un POD

Si FROM o TO no son tipos de POD, la compilación fallará con el estándar actual de C ++ porque no podría unirlos.

Artyom
fuente
1
No estoy seguro. Si su clase contiene un puntero a miembro, no es un POD, pero creo que aún puede ir en una unión.
MSalters