Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 템플릿 메타프로그래밍


템플릿을 사용하여 컴파일 시간에 계산을 수행하는 프로그램을 작성할 때 이를 템플릿 메타프로그래밍이라고 합니다.

예시 코드

#include <iostream>
using namespace std;

template<int n>struct power {
   enum { value = 4*power<n-1>::value };
};

template<>struct power<0> {
   enum { value = 1 };
};

int main() {
   cout <<”power is:”<< power<7>::value << endl;
   return 0;
}

출력

power is:16384

위의 예에서 컴파일러는 power<7>::value를 볼 때 매개변수가 7인 power의 인스턴스를 생성하려고 시도하는데, power<6>도 컴파일 타임에 평가되어야 하는 열거형 상수 값으로 생성되어야 함을 알 수 있습니다. . power<6>의 경우 컴파일러는 power<5> 등이 필요합니다. 마지막으로 컴파일러는 funStruct<1>::value를 사용하고 컴파일 시간 재귀가 종료됩니다. 이것을 템플릿 메타프로그래밍이라고 합니다.