c++ - C++ - 从子类推导模板参数失败
问题描述
我正在尝试使用来自其他类的子类作为模板函数的参数:
template<typename T> class Class1{
public:
class Sub1{};
};
template<typename T> class Class2{
public:
Class2() = default;
template<typename T_other> void func(const typename Class1<T_other>::Sub1 sub) {}
};
// ...code
Class1<int>::Sub1 sub1;
Class2<float> class2;
class2.func( sub1); //ERROR
错误说:
error: no matching function for call to ???Class2<float>::func(Class1<int>::Sub1&)???
class2.func( sub1); //ERROR
^
note: candidate: ???template<class T_other> void Class2<T>::func(typename Class1<T_other>::Sub1) [with T_other = T_other; T = float]???
template<typename T_other> void func(const typename Class1<T_other>::Sub1 sub) {}
^~~~
note: template argument deduction/substitution failed:
note: couldn't deduce template parameter ???T_other???
怎么了?错误消息说正确的类型(Class1<int>::Sub1
),为什么它不能推断出来呢?
解决方案
推荐阅读
- three.js - 处理环中的元素
- unity3d - 无法登录 Unity:抱歉,此链接不再有效
- spring-data-jpa - 在 Spring Data JPQL 连接查询中计数抛出 IllegalArgumentException
- tensorflow - tensorflow安装报错(ERROR:找不到满足tensorflow要求的版本)
- javascript - 在前端使用 mousedown 事件移动方块
- python - True 和 False 怎么可能是空字符串?
- c# - 需要帮助从 C# 中的 Paypal API 中提取所有交易详细信息
- c++ - 当使用 O0 以外的优化时,用于在乘法期间检查溢出的 C++ 函数不起作用
- python - 在 Django 中并行运行一个函数
- ios - 如何防止 UITextfield 根据内容自动调整大小?