2009-05-07 8 views
79

Descargué la base de código de Chromium y me encontré con el WTF namespace.wtf es WTF? (en la base de código WebKit)

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++ construido en reinterpret_cast.

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

+2

probablemente una buena idea para citar la parte "SIN GARANTÍAS". – MSalters

+0

@KennyTM, consulte http://meta.stackexchange.com/questions/45844/is-the-tag-wtf-acceptable para obtener una explicación sobre cómo etiquetar esta pregunta – Earlz

+0

Vaya, esa clase no está descrita por "Web Template Framework" " Es solo una abreviatura conveniente. – macetw

Respuesta

69

Es la abreviatura de W ebT emplat F ARCO y proporciona funciones de uso común en todo el código base de WebKit.

+19

como en "el marco de la plantilla web diaria?" – CashCow

+1

como en las plantillas de C++ haciendo cosas en común :) – ismail

+0

¿alguna forma de clonar esa biblioteca? – Victor

2

Podría ser así, la aplicación bitwise_cast aquí especificado produce un comportamiento indefinido si hacia o desde no es una vaina

Si desde o hacia no son tipos de POD, la compilación fallaría con la corriente C++ estándar porque no podría ponerlos en unión.

+0

Correcto, corregiré la pregunta. – Motti

+1

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

Cuestiones relacionadas