101 votes

Que représente WTF dans la base de code de WebKit ?

J'ai téléchargé Chrome et est tombé sur la base de code de 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 ça veut dire ce que je pense que ça veut dire ? Ça pourrait être le cas. bitwise_cast spécifiée ici ne compilera pas si TO o FROM n'est pas un POD et n'est pas (AFAIK) plus performant que le C++ intégré reinterpret_cast .

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

4 votes

C'est probablement une bonne idée de citer la partie "SANS GARANTIE".

0 votes

@KennyTM veuillez voir meta.stackexchange.com/questions/45844/ pour une discussion sur la façon d'étiqueter cette question

0 votes

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

94voto

ismail Points 19146

C'est le diminutif de W eb T emplâtre F et fournit des fonctions couramment utilisées dans l'ensemble du code source de WebKit.

2 votes

Comme dans les modèles C++ qui font des choses courantes :)

0 votes

Un moyen de cloner cette bibliothèque ?

0 votes

Citations, s'il vous plaît. Fait-il du templating comme Mustache ou JSP ?

5voto

Stan Points 41

Il s'agit d'éviter le problème d'optimisation du crépuscule strict :

gcc, strict-aliasing, et casting à travers une union

2voto

Artyom Points 17387

C'est possible, l'implémentation de 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 la norme C++ actuelle, car vous ne pourriez pas les mettre en union. car il serait impossible de les mettre en union.

1 votes

Je ne suis pas sûr. Si votre classe contient un pointeur vers un membre, ce n'est pas un POD mais il peut quand même aller dans une union, je pense.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X