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 중국어 웹사이트의 기타 관련 기사를 참조하세요!