std 네임스페이스 내 특수화 제한
std 네임스페이스는 템플릿의 명시적인 특수화를 허용하지만 특정 제한 사항이 있습니다.
특수화가 금지된 템플릿:
C 표준에 따르면 다음 템플릿은 std 네임스페이스 내에서 특수화될 수 없습니다.
-
numeric_limits for non -산술 유형(예: complex): 산술 유형만 특수화할 수 있습니다.
-
shared_ptr 및 Weak_ptr: 복사 가능성, 할당 가능성 및 비교에 대한 특정 요구 사항을 충족해야 합니다.
-
해시: 전문화는 표준 해시 클래스 템플릿의 요구 사항을 준수해야 합니다.
-
유형 특성(): 전문화 동작 명시적으로 허용되지 않는 한 정의되지 않습니다(예: 특정 common_type 전문화만 허용됩니다).
-
로케일: 필수 전문화가 있습니다.
-
istreambuf_iterator: 단순 복사 생성자, 기본 생성자 및 소멸자.
-
비부동 소수점 유형의 경우 복잡한: 다른 유형에 대한 특수화 정의는 무의미한 것으로 간주됩니다.
-
원자적 : 삭제된 복사 작업과 constexpr 값 생성자가 있어야 합니다.
-
unary_function 및 bin_function: 전문화는 더 이상 사용되지 않으며 금지됩니다.
일반 제한 사항:
- 모든 특수화는 원래 템플릿 요구 사항과 충돌해서는 안 됩니다.
- 명시적으로 지정하지 않는 한 표준 라이브러리 템플릿의 명시적 특수화 및 인스턴스화는 금지됩니다.
- 멤버 함수, 함수 템플릿 또는 표준 라이브러리 클래스의 멤버 클래스 템플릿의 명시적인 특수화는 정의되지 않은 동작입니다.
위 내용은 std 네임스페이스 내 템플릿 전문화에 대한 제한 사항은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!