Class Template

클래스 템플릿은 가장 구체적으로 맞는 패턴을 고른다

클래스 템플릿은 함수보다 특수화가 자주 쓰입니다. 멤버 구조 자체가 달라질 수 있기 때문입니다. 아래 표는 Pair를 만들 때 어떤 정의가 선택되는지를 한 번에 비교합니다.

인스턴스 생성 시 선택되는 정의

정확히 맞는 명시적 특수화가 가장 강하고, 그다음 가장 구체적인 부분 특수화가 선택됩니다.

생성 코드 맞는 후보 선택 읽는 법
Pair<int, double> Pair<T, U> Primary 두 타입이 서로 달라 기본 정의 사용
Pair<int, int> Pair<T, T> Partial 두 타입이 같다는 패턴이 더 구체적
Pair<int, int*> Pair<T, T*> Partial 두 번째 값이 첫 타입의 포인터
Pair<const char*, const char*> 정확히 일치 Full C 문자열 비교/출력 규칙을 완전히 대체

기본 템플릿

template<T, U>

남은 모든 조합가장 넓은 후보

부분 특수화

template<T> Pair<T,T>

패턴 일치여러 타입에 적용

명시적 특수화

template<> Pair<bool,bool>

정확히 한 조합완전 대체
선택 규칙: 정확한 명시적 특수화 → 가장 구체적인 부분 특수화 → 기본 템플릿 순서로 이해하면 됩니다.