WTF est WTF? (dans la base de code WebKit)
Question
J'ai téléchargé la base de code de Chromium et j'ai lu le 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
Cela signifie-t-il ce que je pense que cela signifie? L’implémentation bitwise_cast
spécifiée ici ne sera pas compilée si TO
ou FROM
n’est pas un POD et n'est pas (AFAIK) plus puissant que le C ++ intégré dans réinterpréter_cast
.
Le seul point lumineux que je vois ici est que personne ne semble utiliser bitwise_cast
dans le projet Chromium.
La solution
C’est l’abréviation de W eb T qui emploie F un ramework et fournit des fonctions couramment utilisées dans l’ensemble de la base de code WebKit.
Autres conseils
C’est pour éviter le problème d’optimisation strict du crénelage:
Pourrait être vrai, l'implémentation bitwise_cast spécifiée ici produit un comportement indéfini si TO ou FROM n'est pas un POD
Si FROM ou TO ne sont pas des types POD, la compilation échouera avec la norme C ++ actuelle. parce que vous ne pourriez pas les mettre en union.