> 백엔드 개발 > C++ > C가 템플릿 템플릿 템플릿 매개변수를 처리할 수 없는 이유는 무엇입니까?

C가 템플릿 템플릿 템플릿 매개변수를 처리할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-02 19:08:31
원래의
803명이 탐색했습니다.

Why Can't C   Handle Template Template Template Parameters?

템플릿 템플릿 매개변수 이해

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>
로그인 후 복사

설명:

템플릿 템플릿 매개변수는 일반 템플릿 유형 매개변수와 유사하게 작동합니다. 그러나 구체적인 유형은 허용되지 않습니다. 대신 템플릿 자체를 허용합니다. 단순화된 이해는 다음과 같습니다.

  • 템플릿 유형 매개변수: 구체적인 유형 일치(예: int, double, Foo 등)
  • 템플릿 템플릿 매개변수: 템플릿 일치(예: 템플릿 매개변수가 있는 클래스 또는 구조체)

예제에서 구문 template 클래스 Z = B> 하나의 템플릿 매개변수 X가 있는 템플릿 클래스를 예상하는 템플릿 유형 매개변수 Z를 정의합니다.

템플릿 템플릿 템플릿 매개변수(불가능)

템플릿 템플릿에 유의하는 것이 중요합니다. C에서는 템플릿 매개변수를 사용할 수 없습니다. 이는 컴파일러 구현을 단순화하기 위해 표준화 위원회에서 내린 설계 결정입니다.

유추: 함수와 함수 포인터

더 나은 이해를 위해 함수와 함수의 유사점을 그려보세요. 포인터:

  • 함수: 값을 인수로 허용
  • 함수 포인터: 값을 허용하는 함수(인수) 허용

마찬가지로 템플릿 템플릿 매개변수는 인수를 허용하는 템플릿(인수)을 허용합니다.

예 및 사용 사례

템플릿 템플릿 템플릿 매개변수는 불가능하지만, 이것이 유용할 수 있는 상황을 상상해 봅시다.

다양한 유형의 스택이나 큐에서 작동하는 알고리즘을 사용하여 일반 그래프 검색 라이브러리를 생성하고 이를 다른 컨테이너 유형으로 구현할 수 있다고 가정해 보겠습니다. 템플릿 템플릿 템플릿 매개변수를 사용하면 단일 함수 호출에서 이러한 모든 측면을 지정할 수 있습니다. 그러나 템플릿 템플릿 템플릿 매개변수를 사용할 수 없으므로 이 사용 사례는 여전히 가상의 예입니다.

위 내용은 C가 템플릿 템플릿 템플릿 매개변수를 처리할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿