質問

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 であり、 reinterpret_cast に組み込まれているC ++よりも強力ではありません。

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

役に立ちましたか?

解決

W eb T エンプレート F ラムワークの略で、WebKitコードベース全体で一般的に使用される機能を提供します。

他のヒント

ストリクトエイリアスの最適化の問題を回避するためです:

gcc、strict-aliasing、およびユニオンのキャスト

  

その可能性があります。TOまたはFROMがPODでない場合、ここで指定されたbitwise_cast実装は未定義の動作をもたらします

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top