왜 C가 추론할 수 없는 컨텍스트에서 T를 추론할 수 없나요?
주어진 코드 조각에서 템플릿 구조체 TMap은 다음과 같이 정의됩니다. 템플릿 인수 T를 사용하여 std::map의 특수화를 나타내는 중첩 유형 Type입니다. 그러나 컴파일러는 T를 추론하지 못합니다. test.
Non-Deducible Context
코드가 유형 이름 TMap
유형 추론의 모호성
비연역적 컨텍스트에서 컴파일러는 다음과 같습니다. 인수 유형이 T를 고유하게 결정하지 않기 때문에 템플릿 인수를 추론할 수 없습니다. 예를 들어 다음을 고려하십시오. 시나리오:
template <> struct TMap<SomeType> { typedef std::map<double, double> Type; }; template <> struct TMap<OtherType> { typedef std::map<double, double> Type; };
이 경우 TMap
결과
연역할 수 없는 컨텍스트의 제한은 중요한 의미를 갖습니다.
완화
이 제한을 완화하기 위해 템플릿 템플릿 인수 또는 C 20의 std::is_same_v와 같은 기술을 사용하여 템플릿 인수를 수동으로 추론할 수 있습니다. 또는 명시적인 템플릿 매개변수 목록을 제공하세요.
위 내용은 C가 추론할 수 없는 컨텍스트에서 템플릿 인수를 추론할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!