wtf это WTF? (в базе кода WebKit)


92

Я загрузил базу кода 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указанная здесь реализация не будет компилироваться, если она не является PODTO или FROMне является (AFAIK) более мощной, чем встроенный C ++ .reinterpret_cast

Единственная точка света, которую я здесь вижу, - это то, что, похоже, никто не использует bitwise_castв проекте Chromium.


4
Возможно, стоит процитировать часть «ОТСУТСТВИЕ ГАРАНТИЙ».
MSalters,

@KennyTM, пожалуйста, посетите meta.stackexchange.com/questions/45844/… для обсуждения того, как пометить этот вопрос
Эрлз,

Вау, этот класс не описывается в «Web Template Framework». Это просто удобная аббревиатура.
macetw 06

Ответы:


82

Это сокращение от W eb T emplate F ramework и предоставляет часто используемые функции во всей кодовой базе WebKit.


2
как в шаблонах C ++, которые делают обычные вещи :)
ismail

любой способ клонировать эту библиотеку?
Виктор

Цитируйте пожалуйста. Делает ли он шаблоны, такие как Moustache или JSP?
adib

@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.