특수화 템플릿이 무엇인지 개념을 잡았다면, 특수화 함수 템플릿을 알아 보자. 일반 함수 템플릿의 경우, 함수에 전달된 인자를 통하여, 템플릿 매개변수를 추론 할 수 있다는 것을 기억 하고 있을 것이다.

특수화 함수 템플릿도 마찬가지 인데, 다음과 같이 사용 할 수 있다.

특수화 클래스 템플릿과 마찬가지로 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* 형이다.


총평

음~ 음~
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기