문제

나는 다운로드했다 크롬코드베이스 및 가로 질러 실행되었습니다 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 아닙니다 현물 상환 지불 C ++ 내장보다 더 강력하지 않습니다. reinterpret_cast.

내가 여기에서 볼 수있는 유일한 빛은 아무도 사용하지 않는 것 같습니다. bitwise_cast 크롬 프로젝트에서.

도움이 되었습니까?

해결책

짧습니다 wEB emplate 에프RAMWORK 및 WebKit 코드베이스 전체에서 일반적으로 사용되는 기능을 제공합니다.

다른 팁

엄격한 알리 아스 최적화 문제를 피하는 것입니다.

GCC, 엄격한 앨리어싱 및 노조를 통한 캐스팅

여기에 지정된 Bitwise_cast 구현은 포드가 아닌 경우 정의되지 않은 동작을 산출합니다.

POD 유형이 아닌 경우, 컴파일은 현재 C ++ 표준으로 실패합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top