wtf - це WTF? (у базі коду WebKit)


91

Я завантажив базу коду 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.


4
Напевно, непогана ідея процитувати частину "БЕЗ ГАРАНТІЙ".
MSalters

@KennyTM, будь ласка, див. Meta.stackexchange.com/questions/45844/… для обговорення того, як позначити це питання
Earlz,

Ого, цей клас не описується в "Framework Web Template". Це просто зручне скорочення.
macetw

Відповіді:


81

Це скорочення W ЕВА T emplate F ramework і надає часто використовувані функції в усьому WebKit кодового.


2
як у шаблонах C ++, які роблять загальні речі :)
ismail

будь-який спосіб клонування цієї бібліотеки?
Віктор

Цитати, будь ласка. Це робить шаблонування як Вуса чи JSP?
адіб

@adib Ні, "шаблон" справді стосується шаблонів C ++ і нічого іншого. Див. Trac.webkit.org/wiki/SourceDirectory та webkit.org/blog/6161/locking-in-webkit (для джерел WebKit) та chromium.googlesource.com/chromium/src/+/master/third_party/… (для Blink джерело).
Тімоті Гу


2

Може бути так, зазначена тут реалізація bitwise_cast дає невизначену поведінку, якщо TO або FROM не є POD

Якщо FROM або TO не є типами POD, компіляція зазнає невдачі з поточним стандартом C ++, оскільки ви не зможете їх об'єднати.


1
Не впевнений. Якщо ваш клас містить вказівник на учасника, це не POD, але він все одно може перейти в об'єднання, я думаю.
MSalters
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.