2017-10-25 21 views
2

일반적으로 템플릿 기술을 사용하여 일반적인 type_traits을 구현할 수 있습니다.is_standard_layout은 어떻게 구현 되었습니까?

그러나 std::is_standard_layout을 어떻게 구현할 수 있는지 상상하지 못했습니다. http://en.cppreference.com/w/cpp/types/is_standard_layout

표준 라이브러리 gcc을 검사했을 때 다른 곳에서는 찾을 수 없었던 __is_standard_layout(T)으로 구현되었음을 알았습니다. 이것은 컴파일러의 마법 함수입니까?

std::is_standard_layout을 명시 적으로 구현할 수 있습니까?

예를 들어, 조건 중 하나는 단일 클래스에서 상속된다는 것입니다. 컴파일 시간을 결정하는 것은 불가능한 것처럼 보입니다.

답변

3

아니요, std::is_standard_layout은 컴파일러 내장 기능없이 구현할 수있는 것이 아닙니다. 올바르게 지적했듯이 C++ 유형 시스템이 표현할 수있는 것보다 많은 정보가 필요합니다.