템플릿 메타 프로그래밍(TMP) : 컴파일 도중에 실행되는 템플릿 기반의 프로그램을 작성하는 일

  • 장점
    • 컴파일 타임에 연산이 끝나기 때문에 프로그램 런타임 속도를 향상시킬 수 있음
    • 컴파일 타임에 오류를 잡아낼 수 있음
  • 단점
    • 코드가 복잡해질 수 있음
    • 컴파일 타임에 연산하므로 디버깅이 불가능
// 컴파일 타임 팩토리얼 계산
#include <iostream>

using namespace std;

template <int N>
struct Factorial {
  static const int result = N * Factorial<N - 1>::result;
};

// 템플릿 특수화를 통해 재귀적 구조가 끝날 수 있도록
template <>
struct Factorial<1> {
  static const int result = 1;
};

int main() {
  std::cout << "6! = 1*2*3*4*5*6 = " << Factorial<6>::result << endl;
}

'C++' 카테고리의 다른 글

C++ 빌드 과정  (0) 2024.08.17
C++ STL  (0) 2024.08.17
C++ 자료형 크기 및 범위  (0) 2024.07.25
C++ 가변 인자 템플릿  (0) 2024.07.07
C++ 템플릿 기초  (0) 2024.06.30

+ Recent posts

목차