// template 전문화가 요즘들어 인기를 얻고 있는 이유. - 메타의 세계
// 컴파일시간에 어떤일을 수행하게 하는 기법. 컴파일시간은 오래 걸리지만
// 실행시간이 단축된다. 주로 전문화를 사용해서 컴파일 재귀호출을 사용한다.
// 하지만 컴파일 역량이 있기 때문에 9번이상?? 은 안된다. 왜그렇까..컴파일 하기 싫은가..
template<int n> class Pow
{
public:
enum { result = n * Pow<n-1>::result };
};
template<> class Pow<0>
{
public:
enum { result = 1 };
};
void main()
{
int n = Pow<5>::result;
cout << n << endl;
}
// Template 전문화( 특화, Specialization ).
template<typename T, typename T2> class Test {}; // 1
template<typename T> class Test<T, int> {}; // 2
Test<int, double> t1; // 1
Test<int, int> t2; // 2
// Primary Template
template<typename T> class Stack
{
T* buf;
};
// 전문화 Template
template<> class Stack<int>
{
};
// 부분전문화- 모든 포인터는 이 클래스 사용
template<typename T> class Stack<T*>
{
T* buf;
};
void main()
{
Stack<int> s;
}