C 17은 템플릿 추론 가이드 개념을 도입하여 개발자에게 유형 추론을 향상시키는 강력한 도구를 제공합니다. 이 글은 템플릿 추론 가이드의 본질을 밝히고 그 목적과 구현을 탐구합니다.
템플릿 추론 가이드는 템플릿 추론 가이드가 실행되는 동안 템플릿 인수를 추론하는 방법을 컴파일러에 알리는 지침입니다. 생성자 초기화. 템플릿의 유형 매개변수와 직접적으로 일치하지 않을 수 있는 생성자 인수를 기반으로 템플릿 매개변수를 지정하는 수단을 제공합니다.
템플릿 추론 가이드는 다음과 같은 경우 필수적입니다. 템플릿 유형은 생성자 인수의 유형만으로는 유추할 수 없습니다. std::Vector 클래스는 전형적인 예를 제공합니다. 생성자는 반복자 쌍을 허용하지만 템플릿 유형(T)은 iterator_traits 특성을 기반으로 추론되어야 합니다. 템플릿 추론 가이드가 없으면 명시적인 유형 지정이 필요하며, 이는 장황하고 오류가 발생하기 쉽습니다.
템플릿 추론 가이드는 다음 구문을 따릅니다.
template<typename... Args> ReturnType(Args...) -> Template<DeducedArguments...>;
예를 들어 벡터 반복자 쌍 생성자는 다음과 같이 선언됩니다. as:
template<typename Iterator> vector(Iterator b, Iterator e) -> vector<typename std::iterator_traits<Iterator>::value_type>;
템플릿 추론 가이드는 클래스와 생성자를 넘어 확장되어 집계 초기화와 함께 사용할 수 있습니다.
template<typename T> struct Thingy { T t; }; Thingy(const char *) -> Thingy<std::string>; Thingy thing{"A String"}; //thing.t is a 'std::string'
템플릿 추론 가이드가 수행한다는 점에 유의하는 것이 중요합니다. 생성자와 동일하지 않습니다. 초기화 중에 템플릿 유형만 결정하며 실제 구성은 추론 가이드의 영향을 받지 않습니다.
위 내용은 C 17 템플릿 추론 가이드는 어떻게 유형 추론을 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!