【发布时间】:2013-10-17 11:12:39
【问题描述】:
这是一个非常简单的模板问题(我认为对于 C++ 大师来说很简单),涉及制作通用数学函数。我有一个简单的 Epsilon 函数,如下所示:
template<class T>
static T Epsilon()
{
return std::numeric_limits<T>::Min();
}
我想将它分配给某个变量,如下所示:
float epsilon = Math::Epsilon();
,唉,我得到一个编译错误:
错误 C2783: 'T Math::Epsilon(void)' : 无法推断模板 'T'的论据
我可以这样分配它,没有错误:
float epsilon = Math::Epsilon<float>();
我认为模板引擎能够看到我的 T 是“浮动的”,但显然它不能。我在这里没有理解什么?
【问题讨论】:
-
template argument deduction需要参数:) -
这不是特别的。我只是以它为例。