Descargué el código base de Chromium y encontré el espacio de nombres 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
¿Significa esto lo que creo que significa? Podría ser así, la bitwise_cast
implementación especificada aquí no se compilará si TO
o FROM
no es un POD y no es (AFAIK) más potente que C ++ integrado reinterpret_cast
.
El único punto de luz que veo aquí es el que parece que nadie está usando bitwise_cast
en el proyecto Chromium.
Respuestas:
Es la abreviatura de W eb T emplate F ramework y proporciona funciones de uso común en todo el código base de WebKit.
fuente
Es para evitar el problema de optimización de aliasing estricto:
gcc, alias estricto y conversión a través de una unión
fuente
Si FROM o TO no son tipos de POD, la compilación fallará con el estándar actual de C ++ porque no podría unirlos.
fuente