템플릿 매개변수의 자동 키워드: 타당성 및 현재 제한 평가
C에서는 템플릿 매개변수 내에서 철저한 유형 인스턴스화를 허용하지만, 템플릿 매개변수는 "auto" 키워드를 사용하여 명시적으로 선언할 수 있습니다. 이렇게 하면 특히 멤버 함수에 대한 포인터와 같은 복잡한 유형의 경우 인수 유형을 수동으로 지정할 필요가 없어 컴파일 시간 편의성이 크게 향상됩니다.
현재 제한 사항
이러한 기능의 매력에도 불구하고 현재 C 언어에서는 불가능합니다. 제공된 코드 예제에서는 "auto"를 사용하여 템플릿 매개 변수를 정의하려고 시도하지만 컴파일러는 기존 구문을 엄격하게 적용하여 템플릿 매개 변수 내에서 명시적인 유형 선언을 요구합니다.
해결 방법
이 제한 사항에 대한 직접적인 해결책은 아직 찾기 어렵지만 인수 전달을 단순화할 수 있는 실행 가능한 해결 방법이 있습니다.
<code class="cpp">#define AUTO_ARG(x) decltype(x), x</code>
이 매크로는 다음과 같이 활용될 수 있습니다:
<code class="cpp">f.bar<AUTO_ARG(5)>(); f.bar<AUTO_ARG(&Baz::bang)>();</code>
<code class="cpp">template <typename T> struct foo { foo(const T& x) {} // do whatever }; template <typename T> foo<T> make_foo(const T& x) { return foo<T>(x); }</code>
이 생성기 함수를 사용하면 인수 전달이 단순화됩니다.
<code class="cpp">make_foo(5); make_foo(&Baz::bang);</code>
향후 고려 사항
이러한 해결 방법은 실용적인 솔루션을 제공하더라도 템플릿 매개변수 내에 "auto" 키워드를 포함하는 것은 여전히 향후 C 버전의 잠재적인 개선 사항으로 간주될 수 있습니다.
위 내용은 C에서 템플릿 매개변수로 \'auto\'를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!