C++ 프로그래밍

C++ Technical Report 1 : Metaprogramming and Type Traits

하늘흐늘 2009. 7. 29. 11:40
반응형

메타프로그래밍을 위한 부분으로 <type_traits> 헤더에 관련된 내용을 담고 있습니다. Type traits는 generic code가 타입의 핵심 속성을 억세스 할 수 있게 해주며 타입간의 관계 결정 또는 관련 있는 타입 간의 변환을 가능하게 해줍니다.
이 부분은 TR1의 라이브러리를 공부하기 보다는 메타프로그래밍 관련 책을 사서 보심이 좋을 듯 합니다. 그 외에 온라인으로 볼 수 있는 관련 내용은 아래와 같습니다.

boost 'TR1 By Subject' boost 'Chapter 1.Boost.TypeTraits'

Metaprogramming
 메타프로그래밍에 대하여

boost 'Background and Tutorial'

의 내용을 바탕으로 간단히 이야기 해보면 다음과 같습니다. 메타프로그래밍은 템플릿 테크닉, 그 중에서 Partial Template-Class Specialization 기법을 이용하여 컴파일 시간(물리적으로 말한다면 컴파일 중)에 특정 조건에 맞는 최적의 코드가 생성되도록 하는 것입니다. 가장 중요한 최적의 코드가 실행시간 중이 아닌 컴파일 중에 Type Traits템플릿을 바탕으로 판단 및 생성되는 관계로 실행 중에 분기에 따른 불필요한 overhead가 없으며 자동으로 생성된다는 것이 장점입니다. 하지만, 막상 구현 코드를 보면 이게 C++인가하는 생각이 들 정도로 별나라 코드 같습니다. 이 부분에 관심있으면 가장 쉽게 접근할 수 있는 것이 static_assert을 한 번 찾아보는 것입니다. 처음 보면 황당하지만 이럴 수도 있구나 하면서 꽤나 좋아할 것입니다....^^;

반응형