Tôi đã tải xuống cơ sở mã của Chromium và chạy trên không gian tên 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
Điều này có nghĩa là những gì tôi nghĩ nó có nghĩa là? Có thể như vậy, việc bitwise_cast
triển khai được chỉ định ở đây sẽ không biên dịch nếu một trong hai TO
hoặc FROM
không phải là POD và không (AFAIK) mạnh hơn C ++ được tích hợp sẵn reinterpret_cast
.
Điểm sáng duy nhất tôi thấy ở đây là dường như không ai sử dụng bitwise_cast
trong dự án Chromium.