추론
인자가 T를 채우는가
max(10, 20)은 T=int로 바로 정해집니다.
호출문 하나에서 T 추론, 명시적 인수 지정, 오버로드 선택이 함께 결정됩니다.
max(10, 20)은 T=int로 바로 정해집니다.
create_zero<double>()처럼 T를 적어야 할 때가 있습니다.
정확히 맞는 일반 함수는 템플릿 후보보다 먼저 선택될 수 있습니다.
| 호출 | 선택되는 후보 | 이유 |
|---|---|---|
max(10, 20) |
일반 함수 int max(int,int) |
정확히 일치하는 비템플릿 함수가 있음 |
max(3.14, 2.71) |
템플릿 T=double |
일반 함수 후보보다 변환이 적음 |
max<int>(10, 20, 30) |
명시 템플릿 | 호출자가 템플릿 인수를 고정함 |
max(10,20)
일반 함수
변환 없음
3.14,2.71
T = double
변환 적음
max<int>
호출자가 고정
후보 확정
함수 템플릿은 중복을 줄이는 문법이면서, 동시에 컴파일러가 타입별 함수를 만들도록 하는 약속입니다.