模板参数上的 C++ 函数模板重载

2024-01-03

是否可以像这样重载函数模板(仅在使用enable_if的模板参数上):

template <class T, class = std::enable_if_t<std::is_arithmetic<T>::value>>
void fn(T t)
{

}
template <class T, class = std::enable_if_t<!std::is_arithmetic<T>::value>>
void fn(T t)
{

}

如果条件在enable_if不重叠?我的 MSVS 编译器抱怨说'void fn(T)' : function template has already been defined。如果没有,替代方案是什么(最好不放enable_if除了模板参数之外的其他地方)?


默认参数在确定函数的唯一性方面不起任何作用。所以编译器看到的是您正在定义两个函数,例如:

template <class T, class>
void fn(T t) { }

template <class T, class>
void fn(T t) { }

这是重新定义相同的函数,因此会出现错误。相反,你可以做的是enable_if本身是模板非类型参数:

template <class T, std::enable_if_t<std::is_arithmetic<T>::value, int> = 0>
void fn(T t) { }


template <class T, std::enable_if_t<!std::is_arithmetic<T>::value, int> = 0>
void fn(T t) { }

现在我们有不同的签名,因此有不同的功能。 SFINAE 将按照预期从过载集中删除其中之一。

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

模板参数上的 C++ 函数模板重载 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • std::bind 重载解析

    下面的代码工作正常 include
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 如何让JProgressBar匹配Windows LaF?

    我已经工作了一段时间了JProgressBar using WindowsLookAndFeel 但我发现与原生进度条有一些主要区别 这是正常状态下的原生栏 虽然这是 Java 的 敏锐的眼睛可能会发现爪哇顶部的白色更亮 绿色也更亮一些 此
  • Blazor 输入复选框

    所以总体目标是我希望在表格上有复选框 所有不同的图案和不同类型的剪裁 男装 女装 通用 并且我希望能够检查图案 x y 和 z 然后剪裁类型男士和女士 然后将我检查过的值传递或访问到一个方法 然后该方法执行所有独特的配置 然后调用我的数据访
  • 如何在业务逻辑层实现事务

    我在我的 asp net 应用程序中使用企业库数据访问块 我想从业务逻辑层跨多个存储过程实现事务 Entlib 打开一个新连接以进行数据库访问 按以下方式使用 Transaction Scope 是否会导致分布式事务 using Trans
  • 我们可以重载Java中的main方法吗?

    我们可以超载吗main Java 中的方法 You can超载main 方法 但仅public static void main String args 当你的类被 JVM 启动时将会被使用 例如 public class Test pub
  • LINQ ToDictionary 和 ToLookup 之间有什么区别

    LINQ ToDictionary 和 ToLookup 之间有什么区别 他们似乎做同样的事情 字典是 1 1 映射 每个键映射到单个值 并且字典在事后是可变的 可编辑的 查找是一个 1 many 映射 多映射 每个键都映射到一个IEnum
  • Spotify 的自定义网络播放器

    据我所知 不可能开发一个Web应用程序 在spotify com之外 提供播放Spotify歌曲的自定义Web播放器 对吗 唯一的选择似乎仍然是 Spotify 播放按钮 但功能非常有限 然而我刚刚看到这个例子 1 http static
  • 如何应对 R 中的“非数字矩阵范围”错误?

    我正在尝试使用标准随机方程从学生的 t 分布生成模拟值的数据框 我使用的函数如下 matgen lt function means chi covariancematrix cols lt ncol means normals lt mvr
  • 如何使用 Python 在 Spark 中添加两个稀疏向量

    我到处搜索 但找不到如何使用 Python 添加两个稀疏向量 我想添加两个稀疏向量 如下所示 1048576 110522 0 6931 521365 1 0986 697409 1 0986 725041 0 6931 749730 0
  • Grails 3.2 JSON 视图中的 Java 8 LocalDate

    当我尝试使用 a 来解析包含 Java 8 LocalDateTime 的简单域模型对象时json视图 http docs grails org latest guide single html whatsNewJSONViews 我收到一
  • 如何使用反射调用自定义运算符

    在我的小项目中我使用System Reflection类来生成可执行代码 我需要打电话给 自定义类型的运算符 有谁知道如何使用 C 反射调用自定义类的自定义运算符 C 编译器将重载运算符转换为具有名称的函数op XXXX where XXX
  • 如何处理 .ajax post 中的 FileStream 返回类型?

    我通过以下代码发送 JSON 对象 控制器返回 CSV 格式的值 应提示打开或保存为 CSV 文件 我无法理解成功应该编写什么代码 函数 结果 导出链接 Html ActionLink Export null new onclick ret
  • 如何让 Java 应用程序与网站交互

    我有一个程序 可以从 Excel 文件中获取数据并为用户进行操作 但为了获取 Excel 文件的更新 需要从网站下载它们 我最初尝试使用机器人类导航到网站 使用用户名和密码登录 然后导航到网站的正确部分 找到 下载 Excel 电子表格 按
  • “所选目录不是 JDK 的有效主目录”Android Studio

    我一直在使用安卓工作室直到我更新到0 2 6 现在 我无法编译或创建新项目 会发生什么 我不确定 但我认为安卓工作室不知道我的 sdk 文件夹在哪里 我的意思是我的 android studio 目录中的 sdk 文件夹 我做了什么 我已经
  • Matplotlib vline 标签参数未显示

    我想用 matplotlib 的 vline 命令标记垂直线 但由于某种原因 label 参数在最终绘图上不执行任何操作 显示任何内容 有谁知道如何让标签显示出来 plt vlines x pah ymin 0 ymax 0 6 color
  • graphviz - 比较图形树

    我必须用 graphviz 来做一份工作 我需要可视化几棵树的图形表示 但无论如何我都必须比较两棵树以查看它们的差异 像这样 我有树 A 和树 B 创建它们的表示并比较它们后 我只需要查看没有共同点的节点 有人告诉我使用 EMF Compa
  • 如何在 TFS 构建定义中获取签入评论/消息?

    是否可以在 TFS 2013 构建定义 工作流程文件 中获取签入注释 消息 我看过BuildDetail但还没找到 注释是 a 的属性 a变更集 http msdn microsoft com en us library microsoft
  • 当锚标记仅触发 jQuery 操作而不重定向用户时,可以替代

    我的页面上有许多锚标记 它们仅触发同一页面上的 jQuery 操作 不会将用户重定向到另一个位置 这是锚标记的正常预期行为 我不想在我的应用程序中为每个操作都提供静态 URL 但是 我也不喜欢每次用户单击其中一个时都将其发送到页面顶部 a
  • 如何使椭圆跟随画布上的曲线

    我在尝试让椭圆正确遵循画布上的路径时遇到问题 我认为问题源于这样一个事实 我的迷你语法定义了 x 和 y 值之间的移动 但仅针对目标属性中的这些值之一 例如 Canvas Top or Canvas Left 我似乎在画布上找不到任何附加的
  • 我可以自动保存正在运行的 jupyter python 笔记本而不在浏览器选项卡中打开它吗?

    所以我有一个长期运行的Python笔记本 只要在我的浏览器选项卡中打开它 它就会每 2 分钟自动保存一次 生活很美好 即使我关闭浏览器选项卡 是否可以保持自动保存 当我关闭选项卡时 内核已经继续运行 这很棒 这有点像 屏幕 但是在 jupy
  • 模板参数上的 C++ 函数模板重载

    是否可以像这样重载函数模板 仅在使用enable if的模板参数上 template