특수화 점검

특수화는 예외가 명확할 때만 기본 템플릿을 대체합니다

타입 하나만 의미가 달라지는지, 타입 패턴 전체가 달라지는지, 함수 오버로딩으로 충분한지 먼저 나누어 판단합니다.

기본 일반 템플릿 유지

대부분의 타입에 같은 의미가 통하면 기본 구현을 우선합니다.

함수 오버로딩 먼저 검토

함수 템플릿은 부분 특수화가 없으므로 읽기 쉬운 오버로드가 자주 낫습니다.

정확한 타입 명시적 특수화

MyValue<bool>처럼 타입 하나가 완전히 다른 저장 방식을 가질 때 씁니다.

타입 패턴 부분 특수화

Pair<T, int>, T*처럼 클래스 템플릿 패턴 일부를 고정합니다.

정의 위치 헤더에서 보이게

특수화도 인스턴스화 시점에 정의가 보여야 링커 문제를 피할 수 있습니다.

복잡도 예외가 늘면 구조 재검토

특수화가 많아지면 trait, concept, 정책 클래스로 의미를 분리합니다.

1. 정확한 특수화 타입이 완전히 일치하면 우선 선택됩니다.
2. 더 구체적 패턴 가능한 부분 특수화 중 가장 좁은 후보를 고릅니다.
3. 일반 템플릿 예외가 없으면 기본 구현으로 돌아갑니다.
4. 남용 금지 성능 기대만으로 기본 타입 특수화를 늘리지 않습니다.