如何判断模板类型是基本类型还是类

2023-12-22

我有这样的代码

template <typename T> void fun (T value)
{
    .....
    value.print ();  //Here if T is a class I want to call print (), 
                     //otherwise use printf
    .....
}

现在,要打印该值,如果T是一个类,我想调用该对象的打印函数,但如果T是一个基本数据类型,我只想使用printf。

那么,如何判断Template类型是基本数据类型还是类呢?


你可以使用std::is_class http://en.cppreference.com/w/cpp/types/is_class(并且可能std::is_union)。详细信息取决于您对“基本类型”的定义。查看有关类型支持的更多信息here http://en.cppreference.com/w/cpp/types.

但请注意,在 C++ 中通常会重载std::ostream& operator<<(std::ostream&, T)用于打印用户定义的类型T。这样,您无需担心传递给函数模板的类型是否是类:

template <typename T> void fun (T value)
{
    std::cout << value << "\n";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何判断模板类型是基本类型还是类 的相关文章

随机推荐

  • javafx.scene.layout.Pane 无法转换为 javafx.fxml.FXMLLoader

    我在尝试从一个场景切换到另一个场景时遇到问题 场景是这样的 当前视图和控制器 login fxml and LoginController 下一步视图和控制器 loggedWindow fxml and UserPanelControlle
  • 为什么我在使用 primefaces 时却使用omnifaces?

    我需要知道使用 OmniFaces 与我目前使用的 PrimeFaces 相比有什么好处 OmniFaces 提供哪些 PrimeFaces 不提供的功能 它们是不同的东西 你可以完美地将它们结合起来 Omnifaces 是 JSF 的一个
  • 来自数据帧的神经网络 LSTM 输入形状

    我正在尝试实施一个LSTM 与 Keras https keras io layers recurrent lstm 我知道 Keras 中的 LSTM 需要具有形状的 3D 张量 nb samples timesteps input di
  • 如何计算Kubernetes集群的节点可分配资源?

    我们有一个集群 其中节点资源不足 导致速度缓慢和过度提交问题 这迫使我们频繁重启节点 我们计划实施节点可分配资源策略 以在系统 kubelet 和应用程序 Pod 之间拆分可用的 CPU 内存和临时存储 遇到了一些有关可分配资源计算的准则h
  • 在 OSX 10.10 Yosemite 上安装 Nokogiri

    我最近升级到 10 10 Yosemite beta 但安装 Nokogiri 时遇到问题 我正在使用 RVM 和 Ruby 1 9 3 我也按照步骤操作here https gist github com vparihar01 58565
  • jQuery:列表在页面加载时扩展

    我一直在寻找非常简单的东西 如何在页面加载时使侧面导航以动画方式展开 但是我平时去的教程网站好像都没有 我能找到的最接近的是这个 jQuery 示例 http codeblitz wordpress com 2009 04 15 jquer
  • 如何使用节点检索 PayPal REST Api 访问令牌

    如何使用节点获取利用 REST Api 所需的 PayPal 访问令牌 一旦您拥有 PayPal 客户端 ID 和客户端密钥 您就可以使用以下内容 var request require request request post uri h
  • 如何在 AKS 上扩展 Cassandra 的 PVC 而不会丢失数据?

    首先我需要说的是 我没有使用 Cassandra 的经验 而且我也不是创建此部署的人 我在 AKS 的集群中运行 Cassandra 有状态集中配置的 PVC 为 1000Gi 目前 这些 Pod 已耗尽存储空间 并且一直处于不健康状态 我
  • 计算 3D 平面的斜率

    我有一组代表不同平面特征的 X Y Z 点 我需要使用法向量计算每个平面的斜率 我认为斜率是由每个平面的法线向量 NV 和假想水平面的 NV 之间的角度给出的 假设我使用的平面方程是 Ax By c z 然后我猜我的平面的法向量是 a b
  • 搜索 NSDictionaries 的 NSArray

    我有一个带有字典的数组 并且需要在数组中搜索 并修改通过字典内的对象名称找到的数组中的特定字典 因此 创建可变数组dictionary 并向该数组添加许多字典 self bloquesArray NSMutableArray alloc i
  • Linq To Entities - 如何过滤子实体

    我有实体Group and User the Group实体有Users属性是用户列表 用户有一个名为IsEnabled 我想编写一个返回列表的 linq 查询Groups 仅包含Users whose IsEnabled是真的 例如 对于
  • WordPress - 删除插件类中定义的操作

    所以我有这个插件代码 class WC List Grid public function construct add action wp array this setup gridlist 20 function setup gridli
  • Makemigrations 错误:django.db.utils.OperationalError:没有这样的表

    当我进行迁移时 我收到以下错误 django db utils OperationalError 没有这样的表 django site Traceback most recent call last File manage py line
  • 旋转 matplotlib Path 对象

    我正在使用 matplotlibPath http matplotlib org api path api html对象创建自定义绘图标记 如所述here https stackoverflow com questions 19448282
  • 使用 jest 测试另一个函数内的函数

    我如何使用 jest 测试下面的代码片段 我正在尝试测试温斯顿自定义格式printf https github com winstonjs winston formats sample js import aa b require thir
  • solr 守护进程

    我想用守护进程运行 solr 我在另一篇文章中看到有一个 init d 脚本可以运行 但它在我的 ubuntu 环境中似乎有问题 每当我尝试使用 etc init d solr start 运行脚本或尝试手动运行以下行时 daemon ja
  • ajax 调用时出现重复标头

    您好 创建了一个对控制器执行 ajax 调用的链接 以便使用 id UpdateCart 更新跨度 问题是 如果用户未经过身份验证 他将被发送到登录页面 并在页面上生成 从图像中可以看出 我的整个标头标签是如何复制并添加到 span 标签内
  • R 重新编译包失败,因为失败

    在我的 Linux 集群上 我在重新编译需要重新编译的 R 包时遇到问题 随着去除libRcpp so在最新版本中 最终目标是 让 R 包 DEseq2 运行 我们已经安装了新版本 g 中的 opt bin目录中有新库 opt lib64
  • Psycopg2:将 CSV 数据复制到具有额外列值的表

    我正在使用copy expert中的方法psycopg2将数据从 CSV 文件复制到 postgresql 表 我有这样的 postgres 表 create table my table cola text colb text colc
  • 如何判断模板类型是基本类型还是类

    我有这样的代码 template