【发布时间】:2020-02-01 13:55:19
【问题描述】:
考虑这个带有隐式构造函数的模板
template<typename T>
struct X { X(T) { } };
还有这个函数模板
template<typename T>
void func(X<T>) { }
即使我为T = int 明确实例化func<T>()
template void func<int>(X<int>);
像这样对func 的调用无法编译
func(1);
错误:
'func' 没有匹配的函数调用
我知道模板参数推导不适用于转换,但在这种情况下,我创建了 func 的显式实例化,因此不需要推导,我希望转换可以像普通函数一样工作。
为什么不工作?
【问题讨论】:
标签: c++ function templates overloading implicit-conversion