>백엔드 개발 >C++ >C 11의 가변 템플릿 매개변수 팩에서 줄임표 구문은 어떻게 작동합니까?

C 11의 가변 템플릿 매개변수 팩에서 줄임표 구문은 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 10:52:03875검색

How does the ellipsis syntax work with variadic template parameter packs in C  11?

가변 템플릿 줄임표 구문

C 11의 가변 템플릿은 다양한 수의 템플릿 인수를 허용합니다. 이 컨텍스트에서 줄임표(...) 토큰의 구문은 엄격한 규칙을 따릅니다.

포장 풀기/포장:
줄임표 위치에 따라 목적이 결정됩니다.

  • 오른쪽(패턴): 템플릿 매개변수 팩을 언팩합니다.
  • 왼쪽(이름): 패킹된 인수를 생성합니다.

확장:
... 왼쪽의 패턴이 반복되며, 압축이 풀린 각 패턴을 쉼표로 구분된 표현식으로 대체합니다.

응용 프로그램:
제공된 코드에서:

<code class="cpp">return unique_ptr<T>(new T(std::forward<Args>(args)...));</code>
  • std::forward: 단일 템플릿 매개변수와 인수를 취하는 비가변 템플릿 함수입니다.
  • 압축 풀기: std::forward(args)... std::forward(arg0), std::forward(arg1)으로 확장됩니다. ..., 여기서 arg0, arg1, ...은 개별 인수입니다.

줄임표 배치 이유:
템플릿 인수 목록 및 매개변수 목록에서 다양한 확장을 위해 줄임표가 중간에 배치됩니다.

  • 템플릿 인수 목록: 줄임표를 사용하면 다양한 개수의 인수를 사용할 수 있습니다.
  • 매개변수 목록: 줄임표는 인수가 단일 팩형 인수로 전달되도록 보장합니다.

추가 참고 사항:

  • 패턴에는 다음이 포함될 수 있습니다. 액세스 지정자(예: public).
  • 줄임표는 배열을 초기화하는 데 사용할 수 있습니다(예: {args, sizeof(T)}....
  • 구문은 다음과 관계없이 동일합니다. 템플릿이 클래스인지 함수인지.

위 내용은 C 11의 가변 템플릿 매개변수 팩에서 줄임표 구문은 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.