WTF это WTF? (в базе кода WebKit)
Вопрос
Я скачал базу кода Chromium и наткнулся на пространство имен 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
Значит ли это, что я думаю? Может быть так, реализация bitwise_cast
, указанная здесь, не будет компилироваться, если TO
или FROM
не является POD и не является (AFAIK) более мощным, чем встроенный в C ++ reinterpret_cast
.
Единственная точка зрения, которую я вижу здесь, это то, что никто не использует bitwise_cast
в проекте Chromium.
Решение
Это сокращение от W eb T emplate F , а также предоставляет часто используемые функции по всей базе кода WebKit. р>
Другие советы
Следует избегать проблемы оптимизации со строгим псевдонимом:
gcc, строгие псевдонимы и приведение через объединение а> р>
Может быть так, реализация bitwise_cast, указанная здесь, приводит к неопределенному поведению, если TO или FROM не является POD
Если FROM или TO не являются типами POD, компиляция завершится с текущим стандартом C ++ потому что вы не сможете соединить их.