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

J’ai téléchargé le code de base de Chromium et j’ai couru dans l’ espace de noms WTF .

namespace WTF { /* * C++'s idea of a reinterpret_cast lacks sufficient cojones. */ template 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? Pourrait être ainsi, l’implémentation de bitwise_cast spécifiée ici ne comstackra pas si TO ou FROM n’est pas un POD et n’est pas (AFAIK) plus puissant que C ++ intégré à reinterpret_cast .

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

Il est court pour les frameworks de travail Web et fournit des fonctions couramment utilisées partout dans la base de code WebKit.

C’est pour éviter le problème d’optimisation de l’aliasing ssortingct:

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

Pourrait-il en être ainsi, 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 échouerait avec le standard C ++ actuel car vous ne pourriez pas les mettre en union.