본문 바로가기
책 정리/Effective C++ 3rd

항목 48. 템플릿 메타프로그래밍, 하지 않겠는가?

by ocean20 2020. 3. 27.

이번장은 저자가 템플릿 메타프로그래밍의 장단점을 보여주고, 권유하는 내용이다.

 

1. TMP란?

  - Template Meta Programming의 줄임말이며, 컴파일 도중에 실행되는 템플릿 기반의 프로그램을 작성하는 일을 말한다. TMP프로그램이 실행을 마친 후엔, 그 결과로 나온 출력물(템플릿으로부터 인스턴스화된 C++코드)이 다시 보통의 컴파일 과정을 거친다.

 

2. TMP의 특징

  1) TMP를 쓰면 다른 방법으로는 까다롭거나 불가능한일을 쉽게 할 수 있다.

  2) 템플릿 메타프로그램은 C++컴파일이 진행되는 동안 실행되기 때문에, 기존 작업을 런타임 영역 -> 컴파일영역으로 전환할 수 있다.

    (1) 실행 에러를 컴파일 도중에 찾을 수 있다.

    (2) 효율적이다. -> 실행 코드, 실행시간, 메모리 차지 축소

 

예) 항목 47.에서 보았듯이, 반복자 중에서도 Random Access Iterator 반복자를 분기하기 위해 if else(런타임) 대신에 함수 오버로딩 기법을 사용하여 컴파일타임으로 전환하였다.

 

참고.

정보문화사에서 발간한 템플릿 메타프로그래밍 서적의 일부이다. 

http://www.infopub.co.kr/ebook/pdf/5674-267.pdf

 

이것 만은 잊지 말자!

- 템플릿 메타프로그래밍은 기존 작업을 런타임에서 컴파일 타임으로 전환하는 효과를 냅니다.

따라서, TMP를 쓰면 선행 에러 탐지와 높은 런타임 효율을 손에 거머쥘 수 있습니다.

- TMP는 정책 선택의 조합에 기반하여 사용자 정의 코드를 생성하는 데 쓸 수 있으며, 또한 특정 타입에 대해 부적절한 코드가 만들어지는것을 막는 데도 쓸 수 있습니다.

 

 

댓글