Saya mengunduh basis kode Chromium dan berlari melintasi 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
Apakah ini berarti apa yang menurut saya artinya? Bisa jadi, bitwise_cast
implementasi yang ditentukan di sini tidak akan dikompilasi jika salah satu TO
atau FROM
bukan POD dan tidak (AFAIK) lebih kuat daripada C ++ bawaan reinterpret_cast
.
Satu-satunya titik cahaya yang saya lihat di sini adalah tampaknya tidak ada yang menggunakan bitwise_cast
dalam proyek Chromium.
Jawaban:
Ini adalah singkatan dari W eb T emplate F ramework dan menyediakan fungsi yang umum digunakan di seluruh basis kode WebKit.
sumber
Ini untuk menghindari masalah pengoptimalan aliasing ketat:
gcc, strict-aliasing, dan casting melalui serikat pekerja
sumber
Jika FROM atau TO bukan tipe POD, kompilasi akan gagal dengan standar C ++ saat ini karena Anda tidak akan dapat menggabungkannya.
sumber