템플릿 매개변수에 'class'와 'typename' 중에서 선택
C에서는 함수나 클래스 템플릿을 선언할 때 다음을 사용할 수 있습니다. 템플릿을 매개변수화하려면 클래스 T 또는 유형 이름 T를 사용하세요. 이는 다음과 같은 질문을 제기합니다. 다른 형식보다 한 형식을 선호하는 강력한 이유가 있습니까?
동등성과 구문
클래스 T와 유형 이름 T는 일반적으로 a와 동일합니다. 컴파일러의 관점. 그러나 C 17부터 중첩된 템플릿 템플릿 매개변수를 지정할 때 키워드 typename을 사용하는 것이 엄격히 권장되며, 이러한 경우 클래스를 사용하라는 이전 요구 사항을 효과적으로 대체합니다.
사용 기본 설정
기본적인 동등성에도 불구하고 일부 프로그래머는 다양한 항목에 대해 일관되게 유형 이름이나 클래스를 사용하는 것을 선호합니다. 이유:
TypeName 기본 설정:
수업 기본 설정:
이중 사용:
기본 설정 없음:
역사적 배경
클래스와 유형 이름의 구분은 C 템플릿의 진화 과정에서 나타났습니다. 처음에는 클래스만 사용했지만 혼동 가능성에 대한 우려로 인해 특별히 템플릿 유형을 지정하기 위한 별도의 키워드로 typename을 만들었습니다. 그러나 이전 버전과의 호환성이 깨지는 것을 피하기 위해 클래스는 이 목적으로 계속 허용되었습니다.
결론적으로 클래스와 유형 이름은 대부분의 실용적인 목적으로 서로 바꿔 사용할 수 있지만 둘 사이의 선택은 개인 취향에 따라 결정되는 경우가 많습니다. 또는 특정 규칙을 준수합니다. 가장 최근의 C 17 개정판에서는 중첩된 템플릿 템플릿 매개변수에 대한 typename의 기본 사용법을 명확히 하여 이러한 복잡한 구성에 대해 일관되고 명확한 구문을 보장합니다.
위 내용은 템플릿 매개변수에 언제 `class`와 `typename`을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!