“fabs”:使用模板时对重载函数的不明确调用

2024-01-12

我有以下功能:

T* tContainer_t<T, R>::Remove( T item )
{    
    typename R::const_iterator it = std::find_if(Container.begin(), Container.end(),  [item](const T* v) { return std::fabs(*v - item) < DBL_EPSILON; });
    if (it != Container.end())
    {
        ...
    }
    else
        return NULL;
}

T can be int, double, float, ETC....

编译器给了我'fabs' : ambiguous call to overloaded function when using templates

有什么问题以及如何解决?

Thanks.


T can be int, 双倍的,float, etc.

共有三个重载std::fabs在 C++ 中float, double, and long double.

如果您尝试致电std::fabs带有类型参数int,由于重载歧义,您将收到编译错误。一个int参数同等地匹配所有三个可用的重载。

您可以将参数转换为已知类型(例如double or long double),这将解决歧义,或者您可以将调用包装到fabs在对整数类型参数执行歧义消除的模板中。

或者,C++ 有std::abs,它对整数和浮点类型都重载(在<cmath> and <cstdlib>)。此外,如果您最近有一个实现 C++11 的标准库实现,则调用std::fabs带有整数类型参数会自动将参数转换为类型double,所以没有歧义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“fabs”:使用模板时对重载函数的不明确调用 的相关文章

随机推荐

  • 假设 DayOfWeek 的数值是否安全?

    我将星期几存储在数据库中 其中星期日 1 星期一 2 等 在数据库查询中 我需要将日期转换为System DayOfWeek 根据MSDN http msdn microsoft com en us library system dayof
  • 使用 libgdx 进行触摸滚动

    我正在尝试在 libgdx 游戏中实现触摸滚动 我有一张宽图像 是房间的全景图 我希望能够滚动图像 以便用户可以看到房间周围的情况 我拥有它 这样我就可以滚动一定的距离 但是当注册新的 touchDragged 事件时 图像会移回到原始位置
  • ASP.NET MVC 资源文件的最佳实践

    以下资源文件的最佳用途是什么 属性 资源 Phil http haacked com archive 2009 12 07 localizing aspnetmvc validation aspx在 DataAnnotation 中使用此资
  • MIUM 8 红米手机后台服务被杀死如何重启

    我在用sticky service用于后台操作 即使应用程序处于运行状态 它在所有手机中也能正常工作closed通过从堆栈中滑动 然后服务重新启动 但在RedMi Note 3w当应用程序通过从堆栈滑动关闭时 service is not
  • 代理背后的 Google Drive API Java 客户端

    我正在尝试使用 Drive API 编写一个 java 客户端驱动器 API v2 https developers google com resources api libraries documentation drive v2 jav
  • 将 WPF 样式触发器绑定到自定义依赖项属性

    我在这里找到了许多类似的线程 但似乎没有一个能解决我的具体问题 我需要在某些条件下突出显示文本框的背景 我创建了一个突出显示属性 并尝试使用样式中的触发器来设置它 但它实际上并没有突出显示文本 这是我的风格 简化了
  • Javascript setTimeout 和重定向 - IE 冻结

    我的页面上有一个脚本用于处理会话超时 当会话到期时在客户端重定向用户 完整的代码有点复杂 但我已经将代码精简到导致问题的原因
  • 更改提交者作者姓名

    我需要 SOS 帮助 我向 bitbucket 提交了一个项目并以我的名字提交 但我需要更改作者姓名 和电子邮件地址 最简单的方法是什么 您可以简单地修改最后一次提交并推送 强制 git commit amend author Your n
  • Nodejs 从 http 请求块中读取 JSON 数据

    我正在使用 Jira API 来获取单票数据 我已成功向服务器设置了 http GET 请求 并且可以将数据显示到控制台 但理想情况下我需要从 JSON 格式的数据中获取某些属性 当我尝试读取属性时 我只是得到了未定义的信息 var req
  • 使用 Mercurial 维护 CMS 和网站

    我对 Mercurial 还很陌生 在阅读了一些教程后 我仍然怀疑什么是完成我打算用它做的事情的最佳方法 我的目标是维护我正在开发的 CMS 添加新功能 修复错误等 并能够轻松地将这些更新分发到我使用所述 CMS 制作的网站 我首先为 CM
  • 如何在vuepress中使用jsx?

    Config docs vuepress config js module exports chainWebpack config isServer gt config module rule js Find the rule use ba
  • 在 Azure Cosmos DB 中使用 REST 进行 CRUD 操作

    我正在尝试使用 REST 在 Azure Cosmos DB 上执行 CRUD 操作 根据链接 https learn microsoft com en us rest api documentdb create a document ht
  • MVC 输入日期时间

    如果我在 MVC 中使用 EditorFor 我的 DateTime 字段会显示未格式化的日期时间 如果我使用旧式 html 我的字段不会收到错误类 div class editor field div
  • 暂停 Elastic Beanstalk 应用程序环境?

    我想在升级数据库时关闭应用程序服务器 有没有办法在不终止 破坏环境的情况下暂停或停止应用程序服务器 我是否可以直接访问 Elastic Beanstalk 负载均衡器并暂时进行更改 而不会对 Elastic Beanstalk 配置或其管理
  • 使用 Hibernate Criteria API 性能不佳

    我有一个使用 Hibernate 与 MsSQL 2005 服务器通信的 Java 应用程序 驱动程序是net sourceforge jtds 1 2 4 一切正常 但性能不佳horrible 我怀疑索引未用于传递给它的查询 因为响应时间
  • 将列表序列化为 JSON [重复]

    这个问题在这里已经有答案了 我正在客户端和 Django 服务器之间发送信息 我想使用 JSON 来实现这一点 我正在发送简单的信息 字符串列表 我尝试使用django core serializers 但是当我这样做时 我得到了 Attr
  • 为什么 /proc/$PID/status 中的 CapEff 全为零

    我从 ping 二进制文件中删除了 setuid 位并添加了cap net raw p而是如下 chmod 755 bin ping setcap cap net raw p bin ping 然后我跑了ping在一个终端中并从另一个终端检
  • 更改 tabbaritem 的字体大小

    是否可以更改选项卡的字体大小 我推荐一个更好的方法 yourTabBarItem setTitleTextAttributes NSDictionary dictionaryWithObjectsAndKeys UIColor whiteC
  • 如何在 Lua 解释器中创建新命令

    编辑 我在ubuntu上 所以在lua解释器中你显然可以调用内置函数 例如 gt 函数名 函数参数 我想创建一个新函数 让 lua 解释器在每次输入时都能识别它 有没有一种方法可以将我的函数添加到 lua 解释器中本机识别的函数列表中 这样
  • “fabs”:使用模板时对重载函数的不明确调用

    我有以下功能 T tContainer t