如何检查模板参数的类型?

2023-11-27

假设我有一个模板函数和两个类

class animal {
}
class person {
}

template<class T>
void foo() {
  if (T is animal) {
    kill();
  }
}

如何检查 T 是否为动物?我不想拥有 在运行时检查的东西。谢谢


Use is_same:

#include <type_traits>

template <typename T>
void foo()
{
    if (std::is_same<T, animal>::value) { /* ... */ }  // optimizable...
}

通常,这是一个完全不可行的设计,但你真的想要专门化:

template <typename T> void foo() { /* generic implementation  */ }

template <> void foo<animal>()   { /* specific for T = animal */ }

另请注意,具有显式(非推导)参数的函数模板是不常见的。这并非闻所未闻,但通常有更好的方法。

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

如何检查模板参数的类型? 的相关文章

  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 将下拉列表与字典绑定

    我将字典绑定到下拉列表 举例来说 我的字典中有以下项目 Test1 123 Test2 321 我希望下拉文本采用以下格式 Test1 Count 123 Test2 Count 321 我沿着以下路径走 但没有运气 MyDropDown
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 你好,我最近正在开发我的新游戏,我遇到了*无限跳跃*的问题

    所以基本上当我按跳跃 空格键时我会跳跃但是如果我连续按空格键它 只是跳啊跳啊跳等等 我不想要我只想它跳一次 code if Input GetKeyDown space isGrounded velocity y Mathf Sqrt ju
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 如何使用 CSI.exe 脚本参数

    当你运行csi exe 安装了 Visual Studio 2015 update 2 您将得到以下语法 Microsoft R Visual C Interactive Compiler version 1 2 0 51106 Copyr
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可

随机推荐

  • __base__ 不起作用!下一步是什么?

    以下代码在 Python 3 x 中不起作用 但它曾经适用于旧式类 class Extender def extension self print Some work class Base pass Base bases Extender
  • iPhone 6 和 6 plus 给出错误的框架、边界值[重复]

    这个问题在这里已经有答案了 我的应用程序在 Xcode 5 1 1 上构建 但在 Xcode 6 上升级后 面临着新尺寸的帧尺寸问题 iPhone 6 的分辨率为 750x1334 但是 获得输出 480x300 是否有人在 iOS 8 i
  • Tkinter:如何让画布窗口中的框架扩展到画布的大小?

    所以我一直在 tkinter 中使用画布小部件来创建一个充满标签且带有滚动条的框架 一切工作正常 除了框架仅扩展到放置在其中的标签的大小 我希望框架扩展到父画布的大小 如果我对画布中的框架使用 pack expand True 我已在下面的
  • JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)

    我创建了一个带有 HelloController 的简单 Spring boot 应用程序 Get API http localhost 8080 hello Response Hello World 现在我创建了一个 JMeter 脚本
  • JavaScript 中 while(i--) 是什么意思?

    我正在使用 swipejsswipejs com 主页滑块使用此逻辑来突出显示活动的无序列表元素 我想知道这是如何实现的同时条件 works ul li li ul var bullets document getElementById b
  • 绑定许多数据框,添加带有其 id 的列[重复]

    这个问题在这里已经有答案了 我有许多重复命名的数据框 df 1 lt data frame x c 1 2 y 2 df 2 lt data frame x c 2 4 y 4 df 3 lt data frame x 2 y c 4 5
  • 哪里有复杂 ASP.net MVC 模型的示例? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找更复杂的 asp net 的示例mvc模型 我在 ASP net 站点上看到的所有模型都非常非常简单 并且只涉及一两个数据库表 我很好奇如
  • 对实体/资源进行 RESTful API 授权?

    我正在一个具有非常复杂的访问控制规则的系统中开发 API 通常需要复杂的 SQL 查询来确定用户是否具有对特定资源的读取或写入访问权限 这会导致我们的客户端应用程序变得非常复杂和冗余 因为它们必须了解所有这些规则才能确定是否向用户提供每个对
  • Flask中如何获取请求体字节?

    请求的content type is application json 但我想获取请求正文字节 Flask 会自动将数据转换为json 如何获取请求正文 您可以通过调用获取非表单相关的数据request get data 您可以通过访问来获
  • 单个图像文件用于存储页面上的所有小图像

    在最近的一场Stackoverflow 播客 Jeff 谈到拥有一个图像文件 其中包含遍布整个页面的所有小图像 然后使用 CSS 对其进行剪切 以便所有图像都能正确显示 重点是减少服务器请求的数量 以便页面加载速度更快 我当时想 哇 这真的
  • powershell脚本格式表输出中的颜色词

    是否可以使用格式表为 powershell 输出仅对某些单词 而不是完整的行 进行着色 例如 此脚本递归扫描文件夹中的字符串 然后使用格式表输出结果 dir r i Select String args 0 format table Pro
  • 从 xml 创建 python 对象表示的模块 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个易于处理的
  • 当用户向下滚动页面时加载图像 -

    我注意到博客中有一种趋势 即在向下滚动页面并且图像出现在视图屏幕中之前 图像不会加载 我想这一定是某种 jquery 魔法 但经过一番谷歌搜索后我无法弄清楚它是如何工作的 有谁知道这是如何做到的 编辑 如果您想查看此行为的示例 请查看 be
  • PHP:CURL已启用但没有效果

    I m trying to get data from external website using cURL in PHP but somehow it s not working I ve checked out that CURL e
  • 缺少“构建签名的 apk”选项

    将 Android Studio 更新到最新版本后 我找不到构建签名 apk 的选项 我已经尝试安装 Android Studio 的 beta 版和金丝雀版本 但它们似乎也不带有该选项 有人可以帮我弄清楚如何生成签名的apk吗 我尝试过重
  • 共享App应用程序快捷方式[UIApplicationShortcutIconTypeShare]

    我见过很多应用程序都使用UIApplicationShortcutIconTypeShare直接从主屏幕共享应用程序的应用程序快捷方式 它直接从主屏幕启动 UIActivityViewController 而无需打开应用程序 你是怎样做的
  • 每个 CPU 架构的真正 ELF TLS ABI 要求是什么?

    乌尔里希 德雷珀的论文on thread local storage 概述了几种不同 cpu 架构的 TLS ABI 但我发现它不足以作为实现 TLS 的基础 原因有两个 它省略了许多重要的体系结构 如 ARM MIPS 等 同时包括一堆完
  • 模板参数推导和 cons 限定

    谁能解释一下为什么代码不能编译 template
  • 如何将字符串与 chrono::milliseconds 连接起来?

    我需要一个带有时间戳 以毫秒为单位 的字符串 我通过这种方式得到了毫秒 在 stackoverflow 上查找之后 milliseconds ms duration cast lt milliseconds gt system clock
  • 如何检查模板参数的类型?

    假设我有一个模板函数和两个类 class animal class person template