Eu baixei cromo base de código 's e correu pelo namespace 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
Isso significa o que eu acho que significa? Pode ser, a bitwise_cast
implementação especificada aqui não será compilada se for TO
ou FROM
não um POD e não for (AFAIK) mais poderoso do que o C ++ integrado reinterpret_cast
.
O único ponto de luz que vejo aqui é que ninguém parece estar usando bitwise_cast
no projeto Chromium.
Respostas:
É a abreviação de W eb T emplate F ramework e fornece funções comumente usadas em toda a base de código do WebKit.
fonte
É para evitar o problema de otimização de aliasing estrito:
gcc, estrito-aliasing e conversão por meio de uma união
fonte
Se FROM ou TO não forem tipos POD, a compilação falhará com o padrão C ++ atual porque você não seria capaz de colocá-los em união.
fonte