기본 계약
primary template이 모든 타입에서 지킬 의미와 인터페이스를 먼저 정의한다.
템플릿 특수화 공통 계약템플릿 특수화는 예외 처리를 붙이는 기능이 아니라 컴파일러가 더 구체적인 타입 패턴을 만났을 때 다른 구현을 고르게 하는 규칙이다. full, partial, overload, if constexpr의 역할을 분리한다.
primary template이 모든 타입에서 지킬 의미와 인터페이스를 먼저 정의한다.
템플릿 특수화 공통 계약포인터, 배열, 특정 타입처럼 구현이 달라지는 패턴만 특수화한다.
필요한 만큼여러 partial specialization이 맞으면 어느 쪽이 더 특수한지 비교된다.
모호하면 오류작은 분기는 if constexpr, 함수 선택은 overload나 concept이 더 명확할 수 있다.
도구 선택