본문 공유 가능 여부
그렇다면 오버로드를 늘리기보다
template<typename T>로 묶습니다.
템플릿을 쓰기 전에는 로직 중복인지, 타입 추론이 가능한지, 본문 연산을 모든 후보 타입이 지원하는지 확인합니다.
그렇다면 오버로드를 늘리기보다
template<typename T>로 묶습니다.
반환 타입에만 T가 있으면 create_zero<int>()처럼
명시합니다.
int와 double이 섞이면 T를 분리하거나
명시 타입을 사용합니다.
a > b, a + b가 없다면 컴파일 오류가
설계 신호가 됩니다.
정확히 일치하는 일반 함수는 템플릿보다 먼저 선택될 수 있습니다.
타입 조합이 많으면 컴파일 시간과 오류 메시지 복잡도가 올라갑니다.
타입만 다른 동일 알고리즘을 컴파일 시점 타입 안전성으로 재사용합니다.
특정 타입만 의미가 다르면 오버로딩, 특수화, 제약을 따로 검토합니다.