Function Template

함수 템플릿 인스턴스화 흐름

템플릿은 함수 하나를 여러 타입에 재사용하게 하지만, 실제 호출 시점에는 타입이 정해진 함수가 생성되어 컴파일됩니다.

TemplateT가 들어간 함수 틀 작성
Call인수 타입으로 T 추론
Instantiate구체 타입 함수 생성
Overload가장 알맞은 후보 선택
01

typename T

타입이 들어올 자리라는 뜻입니다.

02

타입 추론

인수 타입이 같으면 대부분 T를 자동으로 정합니다.

03

명시 지정

필요하면 max<double>(a, b)처럼 직접 지정합니다.

04

오버로딩

일반 함수와 템플릿 후보 중 더 구체적인 함수가 선택될 수 있습니다.

설계 감각

  • 동일한 로직이 타입만 달라질 때 템플릿이 가장 잘 맞습니다.
  • 타입마다 동작이 달라야 한다면 오버로딩이나 특수화를 고려합니다.
  • 에러 메시지가 길어질 수 있으므로 템플릿 본문은 작게 유지합니다.

용어

T타입 매개변수
deduction타입 추론
instantiation생성
specialization특수화