【发布时间】:2021-03-02 01:20:08
【问题描述】:
这里的返回类型是如何推导出来的? 换句话说,如何根据函数指针的返回类型实例化正确的函数。
template<typename From, typename To>
To Convert(const From& f)
{
std::cout << sizeof(From) << " " << sizeof(To) << std::endl;
return To(f);
}
int main()
{
float (*p)(const double &e) = Convert;
p(20.2);
}
打印出来
8 4
【问题讨论】:
-
您将
Convert分配给一个函数指针p,其签名明确为float (*)(const double &),因此From=double和To=float只是从该签名中推导出来的,因为它们是唯一的推导出可以满足赋值的模板值。
标签: c++ templates template-argument-deduction