■  특수화
특정한 템플릿 인수에 대해서 다른 정의를 제공하는것
일반적인 템플릿 클래스 선언
기본적으로 템플릿 클래스에 인자는 무한하다.( T에 올수 있는 타입들이 무한이라는 얘기다)
그래서 어떤 특정한 타입에 대해서 다른 정의를 주고자 할때 부분 특수화를 이용합니다.
방법은 T에 원하는 타입을 고정하는 정의를 하는 것입니다.
template<>에 아무것도 주어지지 않는 것에 주목하세요
이렇게 특수화된 클래스에 멤버함수를 구현하기 위해서 template<>을 사용할 필요가 없습니다.
또한 객체를 선언하지 않더라도 클래스에 정의가 만들어 지기 때문에 헤더에 선언하면 안되고 반드시 구현 파일에 작성해야 한다.
■ 부분 특수화 (partial specialization)
부분 특수화(Partial Specialization)란 템플릿 인수가 여러 개 있을 때 그 중 하나에 대해서만 특수화를 하는 기법이다.
이렇게 2개의 템플릿 인자 T1, T2가 존재한다고 했을때 2인자를 모두 특수화는 것이 아니라 T1 또는 T2 하나에만 타입을 지정하는 것이다.
이제 X< int, double>, X< short, double>는 template <class T1, class T2> class X에서 만들어지는 것이 아니라
특수화 버젼의 template X<T1, double>으로 부터 부분특수화된 클래스가 생성이 된다.
■ 참고
부분적인 템플릿 구현
혼자연구하는 C++

+ Recent posts