Type Traits을 왜 알아야 하는가?

C++ Template Metaprogramming 을 하기 위해서는 Template에서 사용 되는 변수들이 무엇인지 알아야 할 것이다.  알다시피 템플릿의 변수들은 타입과, 컴파일 타임에 확인 가능한 상수들이다. 즉, 이러한 변수들을 이용하여, 메타 프로그래밍을 하는 것이다.

이러한 변수들은 더하거나 빼거나, 비교하여, 특정 "연산"을 수행 할 수 있게 되는데, 그것을  "메타 프로그래밍" 이라 부를 수 있다. 이것은 말하는 더하거나 빼거나 등의 "기본 연산"이 있어야 된다는 전제이다. 메타 프로그래밍을 하기 위한 "기본연산"인 Boost 의 MPL 이다.

예를 들자면, "수"를 계산하기 위해선 "계산"이 필요하고, 이 계산의 기본인 "사칙연산"이 있다는 것을 들 수 있다.


메타 프로그래밍 과 수학을 비교하여 나타내어 진다면

수 == 변수,컴파일 타임에 확인 가능한 상수

계산 == Boost Type Traits

로 보아도 무리가 없을 것이다.



Type Traits 이란 무엇인가?

Type Traits은 Boost 라이브러리 중 한 라이브러리이며, 이번 C++ 0x의 표준에 채택이 된 라이브러리이다. Type Traits은 메타 프로그래밍을 하기 위한 "계산기" 라고 봐도 될 것이다.

Type Traits에 대한 기초지식은 다음 항목에서 짚어 본다.


총평

음~ Type Traits 이 필요하구나란 생각을 하게 된다. 기본 연산이 있어야 무엇을 할 수 있듯이 말이다.


신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요