Pregunta

Descargué la base de código 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

¿Esto significa lo que creo que significa? Podría ser así, la implementación bitwise_cast especificada aquí no se compilará si TO o FROM no es un POD y no es (AFAIK) más poderoso que C ++ integrado en reinterpret_cast .

El único punto de luz que veo aquí es que nadie parece estar usando bitwise_cast en el proyecto Chromium.

¿Fue útil?

Solución

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

Otros consejos

Es para evitar el problema de optimización de alias estricto:

gcc, alias estricto y transmisión a través de una unión

  

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

Si FROM o TO no son tipos POD, la compilación fallará con el estándar C ++ actual porque no podrías ponerlos en unión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top