[정리] template meta programming


[정리] template meta programming

template meta programming 이란, 컴파일 시간에 어떤 연산을 수행하게 하는 기술을 말한다. 아래 예제를 보자. template<int N> struct factorial { enum { value = N * factorial<N-1>::value }; }; //재귀를 종료하기 위해 특수화를 한다. template<> struct factorial<1> { enum {value = 1}; } int main() { int n = factorial<5>::value; // 5*factorial<4>::value // 4*factorial<3>::value // 3*factorial<2>::value // 2*factorial<1>::value // 1 // 5*4*3*2*1 -> 컴파일 시간에 연산 가능하므로 컴파일을 마치면 // n = 120이 된다. } 여기서 알아두어야 할 것은, C++ 11 부터는 struct에서 enum 대신 constexpr을 사용하여 초기...


#constexpr #컴파일 #메타 #template #struct #static #programming #meta #factorial #프로그래밍

원문링크 : [정리] template meta programming