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.


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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.