2009-05-07 2 views
79

Ich habe Chromium Code-Basis heruntergeladen und lief über die WTF namespace.wtf ist WTF? (in WebKit code base)

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 

Bedeutet das, was ich denke, es bedeutet? Könnte so sein, die hier angegebene bitwise_cast Implementierung wird nicht kompiliert, wenn entweder TO oder FROM kein POD ist und nicht (AFAIK) leistungsfähiger als C++ in reinterpret_cast gebaut ist.

Der einzige Punkt des Lichts, den ich hier sehe, ist, dass niemand scheint, bitwise_cast im Chromium-Projekt zu verwenden.

+2

Wahrscheinlich eine gute Idee, die „KEINE GARANTIE“ -Teil zu zitieren. – MSalters

+0

@KennyTM siehe http://meta.stackexchange.com/questions/45844/is-the-tag-wtf-acceptable für eine Diskussion darüber, wie man diese Frage markiert – Earlz

+0

Wow, diese Klasse wird nicht von "Web Template Framework" beschrieben . " Es ist nur eine bequeme Abkürzung. – macetw

Antwort

69

Es ist die Abkürzung für W eb T emplate F AHMEN und Funktionen in der ganzen WebKit Codebasis häufig verwendet wird, liefert.

+19

wie in "das tägliche Web Template Framework?" – CashCow

+1

wie in C++ - Vorlagen tun gemeinsame Sachen :) – ismail

+0

eine beliebige Art des Klonens dieser Bibliothek? – Victor

2

Könnte so sein, die bitwise_cast Implementierung hier ergibt undefiniertes Verhalten angegeben, wenn entweder zu oder von nicht POD

ist

Wenn von oder zu nicht POD-Typ, würde die Zusammenstellung mit aktuellen C scheitern ++ Standard weil Sie nicht in der Lage wären, sie in Verbindung zu bringen.

+0

Richtig du bist, werde ich die Frage korrigieren. – Motti

+1

Nicht sicher. Wenn Ihre Klasse einen Pointer-zu-Member enthält, ist es kein POD, aber es kann immer noch in eine Union gehen, denke ich. – MSalters

Verwandte Themen