함수 템플릿

함수 템플릿은 같은 로직을 타입별 함수로 생성합니다

템플릿을 쓰기 전에는 로직 중복인지, 타입 추론이 가능한지, 본문 연산을 모든 후보 타입이 지원하는지 확인합니다.

중복 제거

본문 공유 가능 여부

그렇다면 오버로드를 늘리기보다 template<typename T>로 묶습니다.

추론 가능

T 추론 가능 여부

반환 타입에만 T가 있으면 create_zero<int>()처럼 명시합니다.

타입 혼합

단일 T 정합성

intdouble이 섞이면 T를 분리하거나 명시 타입을 사용합니다.

연산 요구

타입 연산 지원 여부

a > b, a + b가 없다면 컴파일 오류가 설계 신호가 됩니다.

선택 순서

일반 함수 병행 여부

정확히 일치하는 일반 함수는 템플릿보다 먼저 선택될 수 있습니다.

비용

인스턴스 증가 위험

타입 조합이 많으면 컴파일 시간과 오류 메시지 복잡도가 올라갑니다.

템플릿 적용 조건

타입만 다른 동일 알고리즘을 컴파일 시점 타입 안전성으로 재사용합니다.

함수 템플릿 위험 신호

특정 타입만 의미가 다르면 오버로딩, 특수화, 제약을 따로 검토합니다.