"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > std 네임스페이스 내 전문화에 대한 제한 사항 및 허용 사항은 무엇입니까?

std 네임스페이스 내 전문화에 대한 제한 사항 및 허용 사항은 무엇입니까?

2024년 11월 15일에 게시됨
검색:114

 What are the Restrictions and Allowances for Specialization within the std Namespace?

std 네임스페이스의 전문화: 제한 사항 및 허용

std 네임스페이스에 명시적인 전문화를 추가하는 기능에도 불구하고 특정 템플릿에는 명시적인 금지 사항이 있습니다. . std 네임스페이스 특수화를 사용하는 코드의 유효성을 보장하려면 이러한 제한 사항을 이해하는 것이 중요합니다.

특수화에서 금지된 템플릿

  • numeric_limits: 아님 비산술 표준 유형에 허용됩니다(예: complex).
  • shared_ptr: CopyConstructible, CopyAssignable, LessThanComparable이어야 하며 bool로 변환 가능해야 합니다.
  • weak_ptr: CopyConstructible이어야 합니다. 그리고 CopyAssignable.
  • std::hash: 전문화는 클래스 템플릿 해시의 요구 사항을 충족해야 합니다.
  • type_traits: 클래스 템플릿의 명시적 특수화 는 지정하지 않는 한 정의되지 않습니다.
  • 로캘: 필수 전문화.
  • istreambuf_iterator: 간단한 복사 생성자, constexpr 기본 생성자 및 간단한 소멸자가 필요합니다.
  • complex: float, double 및 긴 이중 특수화가 허용됩니다.
  • atomic: 특수화에는 삭제된 복사 생성자, 복사 할당 연산자 및 constexpr 값 생성자가 있어야 합니다.
  • unary_function 및 bin_function: 더 이상 사용되지 않으며 특수화하면 안 됩니다.

추가 제한

  • 조항당 17.6.4.2.1에서는 std 네임스페이스 또는 해당 하위 네임스페이스에 선언이나 정의를 추가할 때 동작이 정의되지 않습니다. 사용자 정의 유형에 의존하고 표준 요구 사항을 충족하는 템플릿 특수화에만 예외가 적용됩니다.
  • 표준 라이브러리 클래스 템플릿, 멤버 함수 템플릿 또는 멤버 클래스 템플릿의 멤버 함수를 명시적으로 특수화하는 것은 금지되어 있습니다.

특수화가 허용되는 템플릿

명시적으로 금지되지 않은 템플릿은 사용자 정의에 따라 특수화될 수 있습니다. 유형을 입력하고 원본 템플릿의 표준 요구 사항을 충족합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3