wtf est WTF? (dans la base de code WebKit)


91

J'ai téléchargé la base de code de Chromium et j'ai parcouru l' espace de noms 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

Est-ce que cela signifie ce que je pense que cela signifie? Cela pourrait être le cas, l' bitwise_castimplémentation spécifiée ici ne se compilera pas si l'un TOou l' autre FROMn'est pas un POD et n'est pas (AFAIK) plus puissant que le C ++ intégré reinterpret_cast.

Le seul point de lumière que je vois ici est que personne ne semble utiliser bitwise_castdans le projet Chromium.


4
Probablement une bonne idée de citer la partie "AUCUNE GARANTIE".
MSalters

@KennyTM s'il vous plaît voir meta.stackexchange.com/questions/45844/… pour une discussion sur la façon de baliser cette question
Earlz

Wow, cette classe n'est pas décrite par «Web Template Framework». C'est juste une abréviation pratique.
macetw

Réponses:


81

C'est l'abréviation de W eb T emplate F ramework et fournit des fonctions couramment utilisées dans toute la base de code WebKit.


2
comme dans les modèles C ++ faisant des trucs courants :)
ismail

un moyen de cloner cette bibliothèque?
Victor le

Citations s'il vous plaît. Fait-il des modèles comme Moustache ou JSP?
adib

@adib Non, le "modèle" fait vraiment référence aux modèles C ++ et rien d'autre. Voir trac.webkit.org/wiki/SourceDirectory et webkit.org/blog/6161/locking-in-webkit (pour les sources WebKit) et chromium.googlesource.com/chromium/src/+/master/third_party/… (pour Blink la source).
Timothy Gu le


2

Cela pourrait être le cas, l'implémentation bitwise_cast spécifiée ici produit un comportement non défini si TO ou FROM n'est pas un POD

Si FROM ou TO ne sont pas des types POD, la compilation échouerait avec le standard C ++ actuel car vous ne pourriez pas les mettre en union.


1
Pas certain. Si votre classe contient un pointeur vers un membre, ce n'est pas un POD mais il peut quand même entrer dans une union, je pense.
MSalters
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.