> 백엔드 개발 > C++ > C 17 템플릿 추론 가이드는 어떻게 템플릿 인수 추론을 단순화합니까?

C 17 템플릿 추론 가이드는 어떻게 템플릿 인수 추론을 단순화합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-09 14:11:15
원래의
599명이 탐색했습니다.

How Do C  17 Template Deduction Guides Simplify Template Argument Inference?

C 17 템플릿 추론 가이드: 간단한 설명

템플릿 추론 가이드란 무엇인가요?

템플릿 추론 가이드는 컴파일러가 추론하는 데 도움이 되는 C 17에 도입된 기능입니다. 생성자의 템플릿 인수입니다. 생성자 인수와 해당 유형이 템플릿 매개변수에 매핑되는 방식을 지정하는 방법을 제공합니다.

왜(그리고 언제) 필요한가요?

템플릿 추론 가이드가 필요합니다. 생성자 인수에서 템플릿 인수를 추론하는 작업을 인수 형식에서 직접 수행할 수 없는 경우. 예를 들어, 반복자 쌍에서 벡터를 초기화하려면 반복자의 기본 값 유형에 대한 지식이 필요합니다.

선언 방법

템플릿 추론 가이드는 다음을 사용하여 선언됩니다. 다음 구문은 다음과 같습니다.

template <template-argument-list>
class-template id (function-parameter-list) -> deduced-type;
로그인 후 복사

여기서 template-argument-list는 사용 중인 템플릿 인수를 나타냅니다. deduced, function-parameter-list는 생성자 인수를 나타내고 deduced-type은 결과로 추론된 템플릿 유형입니다.

예:

std::Vector 생성자를 고려하세요. 이는 반복자 쌍을 사용합니다.

template <typename Iterator>
void func(Iterator first, Iterator last) {
  vector v(first, last);
}
로그인 후 복사

벡터의 유형 T를 추론하려면 다음이 필요합니다. 템플릿 추론 가이드를 사용하려면:

template <typename Iterator>
vector(Iterator b, Iterator e) -> vector<typename std::iterator_traits<Iterator>::value_type>;
로그인 후 복사

이 가이드는 컴파일러에게 주어진 반복자 유형에 대한 std::iterator_traits의 value_type으로 T를 추론하도록 지시합니다.

집계 초기화 추론 가이드 포함:

템플릿 추론 가이드도 가능합니다. 집계 초기화와 함께 사용:

template <typename T>
struct Thingy {
  T t;
};

Thingy(const char *) -> Thingy<std::string>;

Thingy thing{"A String"}; //thing.t is a `std::string`.
로그인 후 복사

이 예에서 추론 가이드는 T를 std::string으로 추론하는 동시에 const char*로 Thingy의 초기화를 활성화합니다.

참고: 추론 가이드는 템플릿 인수를 추론하는 데에만 사용됩니다. 실제 초기화 과정은 선택한 추론 가이드와 관계없이 이전과 동일한 규칙을 따릅니다.

위 내용은 C 17 템플릿 추론 가이드는 어떻게 템플릿 인수 추론을 단순화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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