wtf é WTF? (na base de código WebKit)

91

Eu baixei cromo base de código 's e correu pelo namespace 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

Isso significa o que eu acho que significa? Pode ser, a bitwise_castimplementação especificada aqui não será compilada se for TOou FROMnão um POD e não for (AFAIK) mais poderoso do que o C ++ integrado reinterpret_cast.

O único ponto de luz que vejo aqui é que ninguém parece estar usando bitwise_castno projeto Chromium.

Motti
fonte
4
Provavelmente uma boa ideia citar a parte "SEM GARANTIAS".
MSalters
@KennyTM, consulte meta.stackexchange.com/questions/45844/… para uma discussão sobre como marcar esta pergunta
Earlz
Uau, essa classe não é descrita por "Web Template Framework". É apenas uma abreviatura conveniente.
macetw

Respostas:

81

É a abreviação de W eb T emplate F ramework e fornece funções comumente usadas em toda a base de código do WebKit.

ismail
fonte
2
como em modelos C ++ fazendo coisas comuns :)
ismail
alguma forma de clonar essa biblioteca?
Victor
Citações, por favor. Ele faz modelos como Mustache ou JSP?
adib
@adib Não, o "modelo" realmente se refere a modelos C ++ e nada mais. Consulte trac.webkit.org/wiki/SourceDirectory e webkit.org/blog/6161/locking-in-webkit (para fontes WebKit) e chromium.googlesource.com/chromium/src/+/master/third_party/… (para Blink fonte).
Timothy Gu
2

Pode ser, a implementação bitwise_cast especificada aqui produz um comportamento indefinido se TO ou FROM não for um POD

Se FROM ou TO não forem tipos POD, a compilação falhará com o padrão C ++ atual porque você não seria capaz de colocá-los em união.

Artyom
fonte
1
Não tenho certeza. Se sua classe contém um ponteiro para membro, não é um POD, mas ainda pode entrar em uma união, eu acho.
MSalters