특수화 템플릿이 무엇인지 개념을 잡았다면, 특수화 함수 템플릿을 알아 보자. 일반 함수 템플릿의 경우, 함수에 전달된 인자를 통하여, 템플릿 매개변수를 추론 할 수 있다는 것을 기억 하고 있을 것이다.
특수화 함수 템플릿도 마찬가지 인데, 다음과 같이 사용 할 수 있다.
특수화 클래스 템플릿과 마찬가지로 template <> 의미는 똑같으나, 함수의 전달 인자의 타입으로 알아서 추론해 주는것은 다르다.
여기서 몇가지 아리송한 것은, 함수의 경우 "함수 오버로딩"도 있는데, 이때는 무엇이 호출 되는가? 에 대해서이다. 이 이야기는 일전에 정리했었는데, 쉽게 말해서, 함수 템플릿과 일반 함수가 동시에 존재 할 경우에는, 일반 함수가 호출 되어 진다. 가장 1 순위이기 때문이다.
그렇다면 템플릿 판별 순위가 있을 듯 한데, 순위가 어떻게 되는가?
제 1 순위, 함수 템플릿 중, 특수화가 있다면 특수화가 제 1순위
제 2 순위, 특수화가 없다면, 컴파일러가 1개 이상 대기 코드를 뽑은 뒤에, 이 중 가장 알맞는 코드가 2순위
제 0 순위, 만약 일반 함수가 있다면, 이 함수가 제 0 순위
예제 코드를 보자.
38 라인 : 39 라인, 40 라인, 41 라인 을 보자.
38 라인은 T 가 int 형
39 라인은 T 가 double 형
40 라인은 T 가 int* 형
41 라인은 T 가 char* 형이다.
총평
음~ 음~'책 정리 > C++ Template' 카테고리의 다른 글
4장, 테이터형이 아닌 템플릿 파라미터 (1057) | 2009.05.07 |
---|---|
3장, 클래스 템플릿 (700) | 2009.05.05 |
2장, C++ Template 함수 템플릿 : Function Family (0) | 2009.04.06 |
1장, C++ Template 에 들어가며 (4) | 2009.04.06 |
C++ Templte 재정리 시작 (0) | 2009.04.03 |
C++ 템플릿 : 템플릿 특수화 개념 잡기 (0) | 2008.12.18 |
C++ 템플릿 : 기본 템플릿 매개변수 개념 잡기 (0) | 2008.12.17 |
C++ 템플릿 : 템플릿 매개변수 정의하는 알고리즘 (0) | 2008.12.16 |
C++ 템플릿 : 함수 템플릿 오버로딩 이해하기 (0) | 2008.12.15 |
C++ 템플릿 : 함수 템플릿 이해하기 (0) | 2008.12.15 |
최근댓글