템플릿 템플릿 매개변수 이해
C 영역에서 템플릿 템플릿 매개변수는 일부 프로그래머에게 어려운 과제입니다. 일반적인 오해를 없애겠습니다.
오해:
아래 코드 조각에서 C가 Z를 템플릿 매개변수가 아닌 또 다른 템플릿 클래스로 간주하지 못하게 하는 이유는 무엇입니까?
<code class="cpp">template<class T> class B {}; // Templated class template<template<class X> class Z = B> // Line in question class BB{};</code>
설명:
템플릿 템플릿 매개변수는 일반 템플릿 유형 매개변수와 유사하게 작동합니다. 그러나 구체적인 유형은 허용되지 않습니다. 대신 템플릿 자체를 허용합니다. 단순화된 이해는 다음과 같습니다.
예제에서 구문 template 클래스 Z = B> 하나의 템플릿 매개변수 X가 있는 템플릿 클래스를 예상하는 템플릿 유형 매개변수 Z를 정의합니다.
템플릿 템플릿 템플릿 매개변수(불가능)
템플릿 템플릿에 유의하는 것이 중요합니다. C에서는 템플릿 매개변수를 사용할 수 없습니다. 이는 컴파일러 구현을 단순화하기 위해 표준화 위원회에서 내린 설계 결정입니다.
유추: 함수와 함수 포인터
더 나은 이해를 위해 함수와 함수의 유사점을 그려보세요. 포인터:
마찬가지로 템플릿 템플릿 매개변수는 인수를 허용하는 템플릿(인수)을 허용합니다.
예 및 사용 사례
템플릿 템플릿 템플릿 매개변수는 불가능하지만, 이것이 유용할 수 있는 상황을 상상해 봅시다.
다양한 유형의 스택이나 큐에서 작동하는 알고리즘을 사용하여 일반 그래프 검색 라이브러리를 생성하고 이를 다른 컨테이너 유형으로 구현할 수 있다고 가정해 보겠습니다. 템플릿 템플릿 템플릿 매개변수를 사용하면 단일 함수 호출에서 이러한 모든 측면을 지정할 수 있습니다. 그러나 템플릿 템플릿 템플릿 매개변수를 사용할 수 없으므로 이 사용 사례는 여전히 가상의 예입니다.
위 내용은 C가 템플릿 템플릿 템플릿 매개변수를 처리할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!