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