> 백엔드 개발 > C++ > C 컴파일러가 기본 함수 인수에서 템플릿 유형 매개변수를 추론할 수 없는 이유는 무엇입니까?

C 컴파일러가 기본 함수 인수에서 템플릿 유형 매개변수를 추론할 수 없는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-05 07:55:02
원래의
536명이 탐색했습니다.

Why Can't C   Compilers Deduce Template Type Parameters from Default Function Arguments?

컴파일러가 기본 함수 인수에서 템플릿 유형 매개변수를 추론할 수 없는 이유는 무엇입니까?

겉으로는 논리적인 가정에도 불구하고 C 컴파일러는 자동으로 템플릿을 추론할 수 없습니다. 기본 함수 인수의 유형 매개변수. 이는 서로 다른 이유로 C 03과 C 11 모두에 적용됩니다.

C 03에서 컴파일러의 무능력은 명시적인 언어 사양(§14.8.2/17)에서 비롯됩니다. "템플릿 유형 매개변수는 함수 기본 인수의 유형에서 추론됩니다."

C 11에서는 기본 템플릿 인수를 지정할 수 있지만 명시적으로 제공해야 합니다. 기본 함수 인수 자체는 템플릿 인수 추론에 사용할 수 없습니다.

<code class="cpp">void bar(int a, T b = 0.0f) { } // C++11</code>
로그인 후 복사

C 11 표준(14.8.2.5/5)은 다음을 포함하는 추론되지 않은 컨텍스트를 정의합니다.

  • "인수 추론이 이루어지는 호출에서 사용되는 기본 인수를 갖는 함수 매개변수의 매개변수 유형에 사용되는 템플릿 매개변수입니다."

결과적으로 명시적 조항 컴파일 오류를 방지하려면 기본 템플릿 인수가 필요한 경우가 많습니다.

위 내용은 C 컴파일러가 기본 함수 인수에서 템플릿 유형 매개변수를 추론할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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