반응형
메타프로그래밍을 위한 부분으로 <type_traits> 헤더에 관련된 내용을 담고 있습니다. Type traits는 generic code가 타입의 핵심 속성을 억세스 할 수 있게 해주며 타입간의 관계 결정 또는 관련 있는 타입 간의 변환을 가능하게 해줍니다.
이 부분은 TR1의 라이브러리를 공부하기 보다는 메타프로그래밍 관련 책을 사서 보심이 좋을 듯 합니다. 그 외에 온라인으로 볼 수 있는 관련 내용은 아래와 같습니다.
Metaprogramming
메타프로그래밍에 대하여
의 내용을 바탕으로 간단히 이야기 해보면 다음과 같습니다. 메타프로그래밍은 템플릿 테크닉, 그 중에서 Partial Template-Class Specialization 기법을 이용하여 컴파일 시간(물리적으로 말한다면 컴파일 중)에 특정 조건에 맞는 최적의 코드가 생성되도록 하는 것입니다. 가장 중요한 최적의 코드가 실행시간 중이 아닌 컴파일 중에 Type Traits템플릿을 바탕으로 판단 및 생성되는 관계로 실행 중에 분기에 따른 불필요한 overhead가 없으며 자동으로 생성된다는 것이 장점입니다. 하지만, 막상 구현 코드를 보면 이게 C++인가하는 생각이 들 정도로 별나라 코드 같습니다. 이 부분에 관심있으면 가장 쉽게 접근할 수 있는 것이 static_assert을 한 번 찾아보는 것입니다. 처음 보면 황당하지만 이럴 수도 있구나 하면서 꽤나 좋아할 것입니다....^^;
반응형
'C++ 프로그래밍' 카테고리의 다른 글
More C++ Idioms (0) | 2017.02.19 |
---|---|
64Bit Programming Models: Why LP64? (0) | 2009.08.22 |
C++ Technical Report 1 : Regular Expressions (0) | 2009.07.31 |
C++ Technical Report 1 : Random Number Generation (0) | 2009.07.30 |
C++ Technical Report 1 : Function pobjects (0) | 2009.07.28 |
C++ Technical Report 1 : Containers (0) | 2009.07.27 |
C++ Technical Report 1 : General Utilities (0) | 2009.07.24 |
C++ Technical Report 1 (TR1) : Overview (0) | 2009.07.23 |