模板类型推断中的推导失败
当尝试从类型成员推导模板参数时,确保上下文可推导至关重要。在给定的代码中,当编译器尝试从类型名 TMap
此失败源于“不可推导上下文”的概念”。在这种情况下,模板类型 TMap
考虑 TMap 的假设特化:
template <> struct TMap<SomeType> { typedef std::map<double, double> Type; };
如果编译器必须从 TMap
进一步特化 TMap:
template <> struct TMap<OtherType> { typedef std::map<double, double> Type; };
情况变得更糟,现在如下:
鉴于这种歧义,编译器无法确定 T 是 SomeType 还是 OtherType。它也无法确定可能的选择数量或识别这些选择。
因此,在模板成员类型与模板参数没有直接关系的上下文中,模板参数推导失败,并且编译器会引发错误。
以上是为什么从成员类型推断时模板类型推导失败?的详细内容。更多信息请关注PHP中文网其他相关文章!