2009-05-07 7 views
79

Ho scaricato il codice base Chromium e ho eseguito lo WTF namespace.wtf è WTF? (nella base del codice 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 

Questo significa ciò che penso significhi? Potrebbe essere così, l'implementazione bitwise_cast qui specificata non verrà compilata se TO o FROM non è un POD e non è (AFAIK) più potente di C++ integrato in reinterpret_cast.

L'unico punto di luce che vedo qui è che nessuno sembra utilizzare bitwise_cast nel progetto Chromium.

+2

probabilmente una buona idea per citare la parte "NESSUNA GARANZIA". – MSalters

+0

@KennyTM per favore vedi http://meta.stackexchange.com/questions/45844/is-the-tag-wtf-acceptable per una discussione su come taggare questa domanda – Earlz

+0

Wow, quella classe non è descritta da "Web Template Framework ". È solo una comoda abbreviazione. – macetw

risposta

69

È breve per W eb T emplate F QUADRO e fornisce funzioni comunemente utilizzato in tutto il codebase WebKit.

+19

come nella "struttura del modello Web giornaliero?" – CashCow

+1

come nei modelli C++ che fanno cose comuni :) – ismail

+0

qualsiasi modo di clonare quella libreria? – Victor

2

Potrebbe essere così, l'attuazione bitwise_cast specificato qui cede un comportamento indefinito se da o verso non è un POD

Se da o verso non sono tipi POD, la compilazione fallirebbe con l'attuale standard C++ perché non saresti in grado di metterli in unione.

+0

Giusto, correggerò la domanda. – Motti

+1

Non sicuro. Se la tua classe contiene un puntatore a membro, non è un POD, ma può ancora andare in un sindacato, penso. – MSalters

Problemi correlati