Template Trace

템플릿 오류 기준

함수 템플릿은 호출 타입마다 실제 함수가 만들어지므로, 오류도 템플릿 정의와 인스턴스화 지점을 함께 봐야 합니다.

추론인수 타입에서 T가 무엇으로 결정됐는지 먼저 확인합니다.
요구 연산본문의 +, >, 복사가 해당 타입에 가능한지 봅니다.
deduce

타입을 결정합니다

max(3, 5)T=int로, 문자열 포인터 비교는 다른 의미가 될 수 있습니다.

instantiate

필요할 때 생성합니다

호출된 타입 조합에 대해서만 컴파일러가 실제 함수 본문을 검사합니다.

overload

더 맞는 함수를 고릅니다

템플릿과 일반 함수가 함께 있으면 오버로드 해석 규칙이 먼저 적용됩니다.

컴파일 시간타입 조합이 늘수록 인스턴스화와 오류 메시지도 늘어납니다.
코드 크기여러 타입에 대해 별도 함수가 생성되어 실행 파일이 커질 수 있습니다.
장점런타임 캐스팅 없이 타입 안전성과 최적화를 동시에 얻습니다.

호출 인스턴스 함수 템플릿은 하나의 함수처럼 보이지만, 실제로는 호출 타입별 함수 가족을 만들어 내는 문법입니다.