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어느 경우 여기에 지정된 구현은 컴파일되지 않습니다 TO또는 FROM아닌 POD 및 내장 ++ C 이상 (AFAIK) 더 강력한되지 않습니다 reinterpret_cast.

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


4
"보증 없음"부분을 인용하는 것이 좋습니다.
MSalters

@KennyTM 참조하십시오 meta.stackexchange.com/questions/45844/...을 이 질문에 태그하는 방법에 대한 설명
Earlz

와,이 클래스는 "웹 템플릿 프레임 워크"에서 설명하지 않습니다. 그것은 단지 편리한 약자 일뿐입니다.
macetw 2014-06-06

답변:


82

W eb T emplate F ramework 의 약자이며 WebKit 코드베이스 전체에서 일반적으로 사용되는 기능을 제공합니다.


2
일반적인 일을하는 C ++ 템플릿 에서처럼 :)
ismail

그 라이브러리를 복제하는 방법은 없나요?
Victor

인용 부탁드립니다. Mustache 또는 JSP와 같은 템플릿을 수행합니까?
아디 브

@adib 아니요, "템플릿"은 실제로 C ++ 템플릿을 의미하며 다른 것은 없습니다. 참조 trac.webkit.org/wiki/SourceDirectorywebkit.org/blog/6161/locking-in-webkit (웹킷 소스) 및 chromium.googlesource.com/chromium/src/+/master/third_party/... 깜박임에 대한 ( 출처).
Timothy Gu


2

그렇다면 여기에 지정된 bitwise_cast 구현은 TO 또는 FROM이 POD가 아닌 경우 정의되지 않은 동작을 생성합니다.

FROM 또는 TO가 POD 유형이 아닌 경우 현재 C ++ 표준으로 컴파일이 실패합니다. 통합에 넣을 수 없기 때문입니다.


1
확실하지 않다. 클래스에 멤버에 대한 포인터가 포함되어 있으면 POD가 아니지만 여전히 유니온으로 갈 수 있다고 생각합니다.
MSalters
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.