FUNCTION TEMPLATE

함수 템플릿은 타입만 다른 반복 함수를 컴파일 시점에 만들어 준다

동일한 로직을 한 번 작성하고, 호출 타입에 맞춰 구체 함수가 인스턴스화된다.

타입 매개변수

함수 정의 안에서 실제 타입이 들어갈 자리를 T로 남긴다.

template <typename T>
타입 추론

호출 인자를 보고 컴파일러가 T를 int, double, string 등으로 결정한다.

max(10, 20)
인스턴스화

필요한 타입 조합의 함수 코드가 생성되고 타입 불일치는 컴파일 단계에서 막힌다.

max<double>(10, 3.14)
판단 기준: 로직은 같고 타입만 다르면 템플릿이 적합하지만, 사용하는 연산을 그 타입이 지원해야 한다.