함수 템플릿 부분 특수화가 가능한 이유
함수 템플릿 부분 특수화는 C에서 지원하는 기능으로 오해되는 경우가 많습니다. 그러나 C 표준에 따르면 이는 허용되지 않습니다.
제공된 코드는 동일한 매개변수 유형을 가진 두 개의 템플릿이 존재하기 때문에 함수 템플릿의 부분 특수화를 보여주는 것으로 보입니다.
template <typename T> inline T const& max(T const& a, T const& b) { return 10; }
자세히 살펴보면 코드가 실제로 max
// Not allowed by the standard! template <typename T> inline T const& max<T,T>(T const& a, T const& b) { return a; // Any value of type T }
오버로딩과 부분 특수화
오버로딩을 사용하면 여러 함수가 동일한 이름을 공유하지만 매개변수는 서로 다를 수 있습니다. 목록을 작성하는 반면, 부분 특수화는 특정 템플릿에 대한 함수 템플릿의 특수 버전을 생성합니다.
결론
어떤 경우에는 함수 템플릿의 부분 특수화가 지원되는 것처럼 보일 수도 있지만 이것이 함수 템플릿의 기능이 아니라는 점을 기억하는 것이 중요합니다. C 표준. 오버로딩은 유사한 기능을 달성하는 유효한 기술이지만 진정한 부분 특수화의 유연성과 유형 안전성이 부족합니다.
위 내용은 C에서 함수 템플릿 부분 특수화가 실제로 가능한가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!