본문 바로가기

Dev/C++

loop, 템플릿 메타프로그래밍 버전..

http://kldp.org/node/27158

위 쓰레드에서 가장 인상 깊은 코드라고 하면 C++ Template Metaprogramming 으로 작성한 코드가 아닐까..

#include <iostream>
using namespace std;


template <int i>
void Say()
{
    Say<i-1>();
    cout << i << ". I will not throw paper airplanes in class" << endl;
}

template <>
void Say<0>() {}


int main()
{
    Say<100>();
}


class template 의 상속을 이용한 코드
아래 코드는 Base 클래스가 먼저 초기화 되야 한다는 규칙을 이용한 코드이다.

#include <iostream>
using namespace std;


template<int i>
struct C : C<i-1>
{
    C() { cout << i << ". I will not throw paper airplanes in class\n"; }
};
template<> struct C<0> {};


int main()
{
    C<100> c;
}