.. 음 얼마전 이 부분에 대해서 정리했던게 새록 새록 기억이 새어 나온다. 빠르게 질문해보자.


1. 템플릿 특화는 무엇인가? 예를 들어라.

.. 특수화된 템플릿이다. 참조 : http://www.ikpil.com/767


2. 부분 특화는 무엇인가? 예를 들어라.

.. 특수화를 부분적으로 한게 부분 특화 이다.


3. 다음 선언을 살펴보자.

a ~ l 까지 어떤 함수가 호출 될지 파악해 보아라.

a는 10번을 호출한다. 이것은 최 우선이 일반 함수라는 것을 알수 있다.

b는 8번을 호출한다. 일반 템플릿보다 특수화 템플릿이 우선 된다는 것을 알 수 있다.

c는 3을을 호출한다. 이때 T는 int 이다.

d는 어느것도 일치되지 않기 때문에 2가 호출 되며, T 는 std::complex<double> 이다.

e는 1번이 호출 되며 각각 int 와 float 이 된다.

f는 9번이 호출된다. a와 같은 조건이다.

g는 6번이 호출 된다.

h는 7번이 호출 된다.

i는 5번이 호출 된다.

j는 4번이 호출 된다.

k는 1번이 호출 된다.

l은 3번이 호출 된다. 1번도 가능성이 높지만, 더 정확한것이 3번이 되기 때문이다.


총평

햇갈리다! 함수 템플릿 오버로딩이 이렇게 까지 햇갈릴 줄 몰랐다. 컴파일러마다 다를 수 있다고 책에 나오니, 꼭 이 규칙이 맞다고는 할 수 없다. 단지 표준에 근거한 .. 호출원리를 설명하기 위한것 같다.

신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요