.. 음 얼마전 이 부분에 대해서 정리했던게 새록 새록 기억이 새어 나온다. 빠르게 질문해보자.
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번이 되기 때문이다.
총평
햇갈리다! 함수 템플릿 오버로딩이 이렇게 까지 햇갈릴 줄 몰랐다. 컴파일러마다 다를 수 있다고 책에 나오니, 꼭 이 규칙이 맞다고는 할 수 없다. 단지 표준에 근거한 .. 호출원리를 설명하기 위한것 같다.
'책 정리 > More Exceptional C++' 카테고리의 다른 글
More Exceptional C++ 목차 및 링크 (0) | 2008.12.23 |
---|---|
항목 11 : Mastermind (난이도 : 8 ) (0) | 2008.12.23 |
항목 9 : 똑같은 코드? ( 난이도 : 5 ) (0) | 2008.12.23 |
항목 8 : set과 map 사용하기 ( 난이도 : 5 ) (0) | 2008.12.22 |
항목 7 : vector와 deque 사용하기 ( 난이도 : 3 ) (0) | 2008.12.22 |
항목 6 : 컨테이너, 포인터 그리고 컨테이너가 아닌 컨테이너 (0) | 2008.12.22 |
항목 5 : typename ( 난이도 : 7 ) (0) | 2008.12.22 |
항목 4 : 확장 가능한 템플릿 : 상속을 통해서 아니면 특성(traits) 클래스를 통해서? ( 난이도 : 7 ) (0) | 2008.12.22 |
항목 3 : 판단자(predicate) Part 2 : 상태와 판단자 ( 난이도 : 7 ) (0) | 2008.12.20 |
항목 2 : 판단자(predicate) Part 1 : remove()가 삭제 하는 것은? (난이도 : 4 ) (0) | 2008.12.19 |
최근댓글