wtf ist WTF? (In WebKit Code-Basis)
Frage
Ich heruntergeladen Chromium 's Code-Basis und lief über den WTF Namespace .
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
Heißt das, was ich denke, es bedeutet? Könnte so sein, spezifiziert die bitwise_cast
Implementierung hier wird nicht kompiliert, wenn entweder TO
oder FROM
kein href="http://en.wikipedia.org/wiki/Plain_Old_Data_Structures" rel="noreferrer"> POD reinterpret_cast.
Der einzige Lichtpunkt ich hier sehe, ist die niemand scheint bitwise_cast
im Chromium-Projekt zu werden.
Lösung
Es ist die Abkürzung für W eb T emplate F AHMT und häufig verwendete Funktionen auf der ganzen WebKit Code-Basis zur Verfügung stellt.
Andere Tipps
Es ist das strikten-Aliasing-Optimierungsproblem zu vermeiden:
Könnte so sein, die bitwise_cast Implementierung angegeben hier ergibt undefiniertes Verhalten, wenn entweder zu oder von nicht POD ist
Wenn von oder zu nicht POD-Typ, würde die Zusammenstellung mit aktuellem C ++ Standard scheitern weil man würde sich nicht in der Vereinigung der Lage sein, setzen.