首页 >后端开发 >C++ >为什么我的 TMap 模板在此函数调用中类型推导失败?

为什么我的 TMap 模板在此函数调用中类型推导失败?

Susan Sarandon
Susan Sarandon原创
2024-12-23 01:10:08777浏览

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

TMap 模板中类型推导失败

针对调用测试函数时出现推导错误的查询,问题出在实例化 T 模板参数的不可推导上下文。

在测试函数中,编译器尝试根据参数tmap_的类型推导类型T。然而,由于 TMap 模板可能存在针对不同类型的多种特化(例如,TMap 和 TMap<:string>),因此编译器无法仅通过检查 tmap_ 的类型来唯一确定 T 的类型。

考虑一个假设的专业化:

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

在这种情况下, TMap::Type 相当于 std::map。但是,如果 OtherType 存在另一个特化,也将其类型定义为 std::map,则编译器在遇到 std::map 时无法推断出 T 对应于哪种类型。 tmap_ 的类型。

编译器缺乏可用于在 tmap_ 的类型和 T 的类型之间建立唯一对应关系的信息,导致报告推导错误。要解决此问题,必须在调用测试函数时显式指定类型 T,确保选择正确的模板特化。

以上是为什么我的 TMap 模板在此函数调用中类型推导失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn