템플릿 인수 및 기본 템플릿 이해
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!