> 백엔드 개발 > C++ > C 17의 'auto' 키워드는 템플릿 매개변수 추론을 어떻게 단순화합니까?

C 17의 'auto' 키워드는 템플릿 매개변수 추론을 어떻게 단순화합니까?

Barbara Streisand
풀어 주다: 2024-12-04 13:47:10
원래의
508명이 탐색했습니다.

How Does C  17's `auto` Keyword Simplify Template Parameter Deduction?

C 17의 자동 템플릿 매개변수 추론의 장점

C 17에서는 템플릿 매개변수의 키워드는 수많은 장점을 제공하는 중요한 추가 기능입니다.

템플릿 인스턴스화를 위한 auto의 자연적 확장

변수 선언에 사용되는 auto 키워드와 유사합니다. < 자동> 템플릿 매개변수를 사용하면 인스턴스화 시 유형이 아닌 매개변수의 유형을 추론할 수 있습니다. 아래 예에서 볼 수 있듯이 매개변수 유형을 명시적으로 지정할 필요가 없습니다.

auto v1 = constant<5>;      // v1 == 5, decltype(v1) is int
auto v2 = constant<true>;   // v2 == true, decltype(v2) is bool
auto v3 = constant<'a'>;    // v3 == 'a', decltype(v3) is char
로그인 후 복사

편리성 향상

명시적 유형 선언을 템플릿 코드를 크게 단순화하여 읽기 쉽고 유지 관리하기 쉽게 만듭니다. 다음 코드를 고려해보세요.

template <typename Type, Type value> constexpr Type constant = value;
constexpr auto const IntConstant42 = constant<int, 42>;
로그인 후 복사

이 코드는

template <auto value> constexpr auto constant = value;
constexpr auto const IntConstant42 = constant<42>;
로그인 후 복사

향상된 코드 간결성

가변 템플릿 매개변수로 작업할 때 특히 유용합니다. 예를 들어, 상수 값의 컴파일 시간 목록을 생성하는 것은 더욱 간결하고 간단해집니다.

template <auto ... vs> struct HeterogenousValueList {};
using MyList1 = HeterogenousValueList<42, 'X', 13u>;

template <auto v0, decltype(v0) ... vs> struct HomogenousValueList {};
using MyList2 = HomogenousValueList<1, 2, 3>;
로그인 후 복사

이에 비해 C 17 이전 버전에서 동일한 기능을 달성하려면 추가 템플릿과 관련된 더 장황하고 복잡한 구성이 필요합니다.

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

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