WTF는 WTF입니까? (WebKit 코드 기반)
문제
나는 다운로드했다 크롬코드베이스 및 가로 질러 실행되었습니다 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 코드베이스 전체에서 일반적으로 사용되는 기능을 제공합니다.
다른 팁
엄격한 알리 아스 최적화 문제를 피하는 것입니다.
여기에 지정된 Bitwise_cast 구현은 포드가 아닌 경우 정의되지 않은 동작을 산출합니다.
POD 유형이 아닌 경우, 컴파일은 현재 C ++ 표준으로 실패합니다.
제휴하지 않습니다 StackOverflow