Function Template

한 번 정의하고, 호출 타입마다 실제 함수를 만든다

함수 템플릿은 복사 붙여넣기를 줄이는 문법이 아니라, 컴파일러에게 타입별 함수를 만들 규칙을 주는 정의입니다.

정의

알고리즘은 하나

template <typename T>
T max(T a, T b) {
    return (a > b) ? a : b;
}

여기서 T는 아직 정해지지 않은 타입 자리입니다.

호출

인자 타입이 T를 채우고 생성 함수를 정한다

호출 T 생성 함수 결과
max(10, 20) int int max(int,int) 20
max(3.14, 2.71) double double max(double,double) 3.14
max('A', 'Z') char char max(char,char) char 'Z'
1

추론

인자에서 T를 결정할 수 있는가?

2

연산

a > b를 그 타입이 지원하는가?

3

후보

더 정확한 일반 함수나 다른 오버로드가 있지는 않은가?