>백엔드 개발 >C++ >이 함수 호출에서 내 TMap 템플릿에 대한 유형 추론이 실패하는 이유는 무엇입니까?

이 함수 호출에서 내 TMap 템플릿에 대한 유형 추론이 실패하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-23 01:10:08746검색

Why Does Type Deduction Fail for My TMap Template in This Function Call?

TMap 템플릿의 유형 추론 실패

테스트 함수 호출 시 추론 오류에 대한 쿼리에 대한 응답으로 문제는 T 템플릿 매개변수가 인스턴스화되는 추론 불가능한 컨텍스트.

테스트 함수 내에서 컴파일러는 매개변수 tmap_의 유형을 기반으로 T 유형을 추론하려고 시도합니다. 그러나 잠재적으로 다양한 유형(예: TMap 및 TMap<:string>)에 대한 TMap 템플릿의 여러 특수화가 있을 수 있으므로 컴파일러는 tmap_ 유형을 검사하는 것만으로는 T 유형을 고유하게 결정할 수 없습니다.

가상의 전문화를 고려해보세요.

template <>
struct TMap<SomeType>
{
    typedef std::map<double, double> Type;
};

이 시나리오에서는 TMap::Type은 std::map과 동일합니다. 그러나 해당 유형을 std::map로 정의하는 OtherType에 대한 또 다른 특수화가 존재하는 경우 컴파일러는 std::map tmap_ 유형.

tmap_ 유형과 T 유형 간의 고유한 대응 관계를 설정하기 위해 컴파일러에서 사용할 수 있는 정보가 부족하여 보고된 추론 오류가 발생합니다. 이 문제를 해결하려면 테스트 기능을 호출할 때 T 유형을 명시적으로 지정하여 올바른 템플릿 특수화가 선택되었는지 확인해야 합니다.

위 내용은 이 함수 호출에서 내 TMap 템플릿에 대한 유형 추론이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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