>  기사  >  백엔드 개발  >  std 네임스페이스 내 템플릿 전문화에 대한 제한 사항은 무엇입니까?

std 네임스페이스 내 템플릿 전문화에 대한 제한 사항은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 18:59:30286검색

 What are the Restrictions on Specializing Templates within the std Namespace?

std 네임스페이스 내 특수화 제한

std 네임스페이스는 템플릿의 명시적인 특수화를 허용하지만 특정 제한 사항이 있습니다.

특수화가 금지된 템플릿:

C 표준에 따르면 다음 템플릿은 std 네임스페이스 내에서 특수화될 수 없습니다.

  • numeric_limits for non -산술 유형(예: complex): 산술 유형만 특수화할 수 있습니다.
  • shared_ptr 및 Weak_ptr: 복사 가능성, 할당 가능성 및 비교에 대한 특정 요구 사항을 충족해야 합니다.
  • 해시: 전문화는 표준 해시 클래스 템플릿의 요구 사항을 준수해야 합니다.
  • 유형 특성(): 전문화 동작 명시적으로 허용되지 않는 한 정의되지 않습니다(예: 특정 common_type 전문화만 허용됩니다).
  • 로케일: 필수 전문화가 있습니다.
  • istreambuf_iterator: 단순 복사 생성자, 기본 생성자 및 소멸자.
  • 비부동 소수점 유형의 경우 복잡한: 다른 유형에 대한 특수화 정의는 무의미한 것으로 간주됩니다.
  • 원자적 : 삭제된 복사 작업과 constexpr 값 생성자가 있어야 합니다.
  • unary_function 및 bin_function: 전문화는 더 이상 사용되지 않으며 금지됩니다.

일반 제한 사항:

  • 모든 특수화는 원래 템플릿 요구 사항과 충돌해서는 안 됩니다.
  • 명시적으로 지정하지 않는 한 표준 라이브러리 템플릿의 명시적 특수화 및 인스턴스화는 금지됩니다.
  • 멤버 함수, 함수 템플릿 또는 표준 라이브러리 클래스의 멤버 클래스 템플릿의 명시적인 특수화는 정의되지 않은 동작입니다.

위 내용은 std 네임스페이스 내 템플릿 전문화에 대한 제한 사항은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.