>  기사  >  백엔드 개발  >  ## C 17은 부분 클래스 템플릿 인수 추론을 달성할 수 있습니까?

## C 17은 부분 클래스 템플릿 인수 추론을 달성할 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-25 06:20:28261검색

## Can C  17 Achieve Partial Class Template Argument Deduction?

C 17의 부분 클래스 템플릿 인수 추론

C 17에서 클래스 템플릿 인수 추론(CTAD)을 사용하면 클래스 템플릿 인수 추론을 허용합니다. 함수 또는 생성자. 그러나 현재 이 프로세스에서는 인수를 모두 지정하거나 전혀 지정하지 않아도 됩니다.

템플릿 인수를 부분적으로 지정하고 나머지 인수를 추론하는 것이 가능한지 의문이 생깁니다. 예:

<code class="cpp">Base<V = bool> val1(1, 4.);        // U & V deduced --> Base<int, double, bool>
Base<T = bool, T =int> val2(5.);  // V deduced     --> Base<bool, int, double></code>

그러나 이를 달성하기 위해 다음과 같이 별칭 템플릿을 사용하려고 하면

<code class="cpp">template<class T, class U> using Base2 = Base<T, U, double>;

void func() {
    NewBase2 val(1, 2);
}</code>

컴파일 오류가 발생합니다.

현재 CTAD 부분 공제를 지원하지 않습니다. 이 기능을 제안한 논문 P1021R0은 승인되지 않았습니다. 그러나 C 20에는 해결 방법을 제공할 수 있는 별칭 템플릿(P1814) 및 집계(P1816)에 대한 지원이 포함될 수 있습니다.

위 내용은 ## C 17은 부분 클래스 템플릿 인수 추론을 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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