2009-05-07 12 views
79

Pobrałem bazę kodu Chromium i przeszukałem numer WTF namespace.wtf to WTF? (w bazie kodu 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 

Czy to oznacza, co myślę, że oznacza? Możliwe, że implementacja podana tutaj bitwise_cast nie zostanie skompilowana, jeśli TO lub FROM nie jest i nie jest (AFAIK) silniejsza niż C++ zbudowana w reinterpret_cast.

Jedyny punkt światła, który widzę tutaj, to nikt nie wydaje się używać bitwise_cast w projekcie Chromium.

+2

dobrym pomysłem zacytować „Brak gwarancji” część. – MSalters

+0

@KennyTM zobacz http://meta.stackexchange.com/questions/45844/is-the-tag-wtf- dopuszczalny do dyskusji na temat oznaczania tego pytania. – Earlz

+0

Wow, ta klasa nie jest opisana przez "Web Template Framework . " To tylko wygodny skrót. – macetw

Odpowiedz

69

To skrót W eb T emplate F R AMY i zapewnia funkcje powszechnie stosowane na całym kodzie WebKit.

+19

jak w "dziennym schemacie szablonu sieci?" – CashCow

+1

jak w szablonach C++ robienie zwykłych rzeczy :) – ismail

+0

jakikolwiek sposób klonowania tej biblioteki? – Victor

2

Może być tak, to bitwise_cast realizacja podano tutaj daje niezdefiniowane zachowanie czy też do lub z nie jest POD

Jeśli FROM lub nie są typy POD, kompilacja nie powiedzie się z bieżącym C++ standardowy , ponieważ nie byliby w stanie umieścić ich w związku.

+0

Dobrze, poprawię pytanie. – Motti

+1

Nie jestem pewien. Jeśli twoja klasa zawiera wskaźnik do członka, to nie jest POD, ale nadal może chodzić w związku, tak myślę. – MSalters

Powiązane problemy