gpt4 book ai didi

c++ - 为什么编译器不能为这个简单的函数推断出模板参数?

转载 作者:太空狗 更新时间:2023-10-29 23:23:17 27 4
gpt4 key购买 nike

这是一个非常简单的模板问题(我认为对于 C++ 专家来说很简单),涉及制作通用数学函数。我有一个简单的 Epsilon 函数,如下所示:

template<class T>
static T Epsilon()
{
return std::numeric_limits<T>::Min();
}

我想将它分配给某个变量,如下所示:

float epsilon = Math::Epsilon();

,唉,我得到一个编译错误:

error C2783: 'T Math::Epsilon(void)' : could not deduce template argument for 'T'

我可以这样赋值,不会出错:

float epsilon = Math::Epsilon<float>();

我以为模板引擎能够看到我的 T 是“ float 的”,但显然它不能。我在这里没理解什么?

最佳答案

问题是 C++ 没有完整的 Hindley-Milner 演绎算法。相反,它从函数参数推导出模板参数。

您的函数没有参数,因此无法推导出模板参数。

关于c++ - 为什么编译器不能为这个简单的函数推断出模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19425137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com