wtf es WTF? (en base de código WebKit)
Descargué la base de código de Chromium y corrí a través del 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 implementación bitwise_cast
especificada aquí no se compilará si TO
o FROM
no es un POD y no es (AFAIK) más potente que C++ construido en reinterpret_cast
.
El único punto de luz que veo aquí es que nadie parece estar usando bitwise_cast
en el proyecto Chromium.
3 answers
Es corto para Web Template Framework y proporciona las funciones más utilizadas en todo el WebKit de código base.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-16 08:24:53
Es para evitar el problema de optimización de alias estrictos:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:48
Podría ser así, la implementación de bitwise_cast especificada aquí produce un comportamiento indefinido si HACIA o DESDE no es un POD
Si FROM o TO no son tipos de POD, la compilación fallaría con el estándar actual de C++ porque no serías capaz de ponerlos en unión.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-07 11:56:31