> 백엔드 개발 > C++ > 본문

C 11 및 이전 버전에서 기본 인수가 있는 클래스 템플릿에 빈 꺾쇠 괄호를 사용해야 하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-04 14:46:05
원래의
564명이 탐색했습니다.

Why Is It Necessary to Use Empty Angle Brackets for Class Templates with Default Arguments in C  11 and Earlier?

템플릿 인수 및 기본 템플릿 이해

C에서 템플릿 인수는 클래스 및 함수 템플릿 작업에 필수적인 측면입니다. 기본 템플릿 인수로 클래스 템플릿을 선언할 때 객체 생성 시 인수 지정을 생략할 수 있지만 이 동작에는 특정 제한이 따릅니다.

설명을 위해 다음 코드를 살펴보겠습니다.

<code class="cpp">template <typename T = int>
class Foo {
};</code>
로그인 후 복사

이 코드는 T = int의 기본 템플릿 인수를 사용하여 클래스 템플릿 Foo를 정의합니다. 템플릿 인수를 명시적으로 지정하지 않고도 Foo 객체를 생성할 수 있지만:

<code class="cpp">Foo me;</code>
로그인 후 복사

이 구문은 C 17에서만 도입되었다는 점에 유의하는 것이 중요합니다. 그 전에는 다음 코드가 필요했습니다.

<code class="cpp">Foo<> me;</code>
로그인 후 복사

꺾쇠 괄호(<>)는 템플릿 인수가 있지만 비어 있음을 나타냅니다. 컴파일러는 기본값을 사용하는 경우에도 T의 유형을 알아야 하기 때문에 이 구문이 필요합니다. Foo me;에서와 같이 템플릿 인수를 제공하지 않으면 컴파일 오류가 발생합니다.

이러한 구별은 단일 기본 인수가 있는 함수와 유사합니다. 괄호가 없는 foo는 함수를 호출하지 않지만 foo()는 함수를 호출하는 것처럼 기본값으로 인스턴스화를 트리거하려면 템플릿 인수 구문이 있어야 합니다.

위 내용은 C 11 및 이전 버전에서 기본 인수가 있는 클래스 템플릿에 빈 꺾쇠 괄호를 사용해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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