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ます。ここで指定された実装は、PODでない場合、TOまたはPODでなく、(AFAIK)組み込みのC ++よりも強力でFROMない場合はコンパイルされません。reinterpret_cast

ここで私が目にする唯一の光のポイントはbitwise_cast、Chromiumプロジェクトで誰も使用していないようです。


4
おそらく「NO WARNANTIES」の部分を引用するのは良い考えでしょう。
MSalters 2009年

@KennyTMを参照してくださいmeta.stackexchange.com/questions/45844/...をこの質問にタグ付けする方法の議論について
Earlz

うわー、そのクラスは「Webテンプレートフレームワーク」では説明されていません。これは便利な略語です。
macetw 2014

回答:


81

それはのために短いですW ebでT emplate Fの rameworkと、すべてのWebKitのコードベースの上に一般的に使用する機能を提供します。


2
一般的なことをしているC ++テンプレートのように:)
ismail

そのライブラリを複製する方法はありますか?
ビクター

引用してください。MustacheやJSPのようにテンプレート化しますか?
adib 2017年

@adibいいえ、「テンプレート」は実際にはC ++テンプレートのみを指し、それ以外のものはありません。参照trac.webkit.org/wiki/SourceDirectorywebkit.org/blog/6161/locking-in-webkit(WebKitのソース用)とchromium.googlesource.com/chromium/src/+/master/third_party/...ブリンクについて(ソース)。
Timothy Gu


2

そうかもしれませんが、ここで指定されたbitwise_cast実装は、TOまたはFROMのいずれかがPODでない場合、未定義の動作をもたらします。

FROMまたはTOがPODタイプではない場合、それらを結合することができないため、現在のC ++標準ではコンパイルが失敗します。


1
わからない。クラスにメンバーへのポインターが含まれている場合、それはPODではありませんが、それでもユニオンに入れることができると思います。
MSalters 2009年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.