![]() |
1
0
您将函数模板与隐式转换混合在一起,这会带来麻烦。
一般来说,问题在于在模板参数推导过程中不考虑隐式转换,因此
添加非模板重载
为了解决这个问题,您可以添加两个附加的非模板重载。
因为这些成员函数不是模板,所以隐式转换就像
这两个新的重载与现有的函数模板并不冲突,因为非模板在重载解决方面更匹配。
您可以在
constructor of
约束您的函数模板
此外,无论这是否解决了您的问题,您都应该限制运算符重载。
你可以用
看见 working solution at Compiler Explorer 替代解决方案
你也可以定义一个整体
这种方法显然是正确的,但需要定义一个特性来检查类型是否
再次查看
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |