如何对多种类型进行一种显式专业化?

2023-12-14

考虑如下所示的模板函数,如何才能显式地将函数的一个版本专门化为多种类型:

template <typename T>
void doSomething(){
 //whatever
}

目的是拥有一种专业化,而不是以下多个专业化,因为 // 某些东西是相同的:

void doSomething<int>(){
 //something
}
void doSomething<float>(){
 //something
}
void doSomething<double>(){
 //something
}

有什么方法可以实现某一专业化?


您无法使模板函数专业化。但是您可以将实现委托给一个辅助类,该类可以在您的函数中使用。一些骨架代码:

实现一个模板类并对其进行专门化:

template< typename T, bool isArithmetic>
struct Something { void operator()() { ... } };

template< typename T, true>
struct Something { void operator()() { ... do something specialized for arithmetic types; } }

然后在模板函数中使用它:

template< typename T>
void myFunction()
{
   Something<T, IsArithmetic<T>::value>()();
}

其中 IsArithmetic 是一个提供有关类型 T(选择器)信息的类。例如,您可以在 boost 库中找到此类类型信息。

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

如何对多种类型进行一种显式专业化? 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

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

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 如何使用 CSI.exe 脚本参数

    当你运行csi exe 安装了 Visual Studio 2015 update 2 您将得到以下语法 Microsoft R Visual C Interactive Compiler version 1 2 0 51106 Copyr
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

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

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的
  • 为什么表达式 a = a + b - ( b = a ) 在 C++ 中给出序列点警告?

    以下是测试代码 int main int a 3 int b 4 a a b b a cout lt lt a lt lt a lt lt lt lt b lt lt b lt lt n return 0 编译此命令会出现以下警告 gt g

随机推荐

  • QOMX_COLOR_FormatYUV420PackedSemiPlanar64x32Tile2m8ka 转换器

    我需要处理YUVAndroid 上 H W 解码输出的数据 实际上 我使用的是Nexus4 解码输出格式是QOMX COLOR FormatYUV420PackedSemiPlanar64x32Tile2m8ka type 但是我需要YUV
  • 防止 MS-SQL 表中的循环引用

    我有一个包含 ID 和 ParentAccountID 的帐户表 以下是重现这些步骤的脚本 如果 ParentAccountID 为 NULL 则该帐户被视为顶级帐户 每个帐户最终应以顶级帐户结束 即 ParentAccountID 为 N
  • Google Apps脚本中的持久变量[重复]

    这个问题在这里已经有答案了 以下始终显示 0 var gNumber 0 function myTest Browser msgBox gNumber gNumber 当然 我可以使用 ScriptProperties 或 UserProp
  • 《小阴谋家》中的 Y 组合器讨论

    所以 我花了很多时间阅读并重新阅读第9章的结尾小阴谋家 其中应用 Y 组合器是为length功能 我认为我的困惑可以归结为一个对比两个版本长度的语句 在组合器被分解之前 A lambda mk length mk length mk len
  • 反序列化具有多种数据类型的 JSON 文件作为一个键

    我想分析 Telegram Chats 因此我以 JSON 格式导出了一个聊天记录 并希望将其反序列化到我的分析软件中 id 397910 type message date 2018 02 21T10 27 59 edited 1970
  • Google Maps API v3 多个标记信息窗口

    我使用下面的代码来显示带有多个标记和信息窗口的地图 现在我遇到了所有标记上显示最后一个信息窗口的非常常见的问题 我尝试过各种解决方案 包括 http you arenot me 2010 06 29 google maps api v3 0
  • 在 Eclipse 中运行时加载资源时出现问题

    我正在开发一个 swing 项目 使用 maven2 从命令行 和 eclipse 没有 Maven 集成 所以 我通过生成 eclipse 项目Maven Eclipse 插件 mvn eclipse eclipse 将其导入到 ecli
  • 如何使用 HMAccessoryPayLoad 添加 HomeKit 配件?

    您好 目前我正在研究 HomeKit 我想使用 HomeKit 实现一项功能 我的要求是不使用二维码我想添加配件 因为每个配件都有自己的 URL 例如X HM XXXXXXXXX与 QR 码相关联 即HMAccessoryPayLoad 我
  • 调整 hexbin 图例中断

    在这个六边形图的示例中 右侧的图例有 10 个级别 类 中断 有谁知道如何更改级别数 假设我想将其更改为 5 或其他值 library hexbin x rnorm 1000 mean 50 sd 1 y rnorm 1000 mean 3
  • django 1.8 的多个数据库(mongodb[mongoengine] 和 sql )

    我正在将 mongoengine 与 Django 结合使用 我的项目需要连接到一个 MongoDB 实例 而另一个则使用 sql setting py 的数据库部分应该是什么样子 DATABASES default ENGINE djan
  • 在 Python 中将一部分 geojson 对象合并到另一个对象中

    EDIT 我正在尝试在 Python 中操作 JSON 文件 在我的数据中 一些多边形有多个相关信息 坐标 LineString and 面积百分比 and area Text and Area in Point 我想将它们组合成一个 JS
  • 带有 NavigationController 和 TabController 的故事板

    看起来这个应该很容易弄清楚 但是今天下午我没有任何运气 我将我的问题的快速 简化的故事板模型拼凑在一起 基本上 我希望下面的表视图控制器也位于选项卡栏控制器中 除了已经存在的导航控制器之外 选项卡将在两个表视图控制器之间切换 现在 带有按钮
  • 如何实现没有操作栏的导航抽屉,但通过主屏幕上的按钮打开导航屏幕?

    导航抽屉应用程序的 left drawer 片段上有登录屏幕 请参阅链接 如何在android导航抽屉下显示活动 登录屏幕 我想使用按钮从主屏幕打开此登录屏幕 并且也不希望导航抽屉上有操作栏 有人可以帮我解决这个问题吗 提前致谢 其实很简单
  • 关于创建自己的维基的建议?

    我和我的朋友正在考虑创建我们自己的维基 鉴于它们最近变得如此普遍 我们听说这并不难 我们希望使网站尽可能简单 我们在网页设计方面有一些经验 但在系统管理方面却没有很多经验 未来我们应该牢记哪些事情 例如 哪些维基农场可能有用 或者我们应该牢
  • 当我尝试从 java 运行批处理文件时,我收到“dig 未被识别为内部或外部命令”

    import java io public class Main public static void main String args throws IOException StringIndexOutOfBoundsException
  • 提交任务到Spark

    我按照本教程在 ubuntu 14 04 上安装了 Sparkhttp blog prabeeshk com blog 2014 10 31 install apache spark on ubuntu 14 dot 04 我能够运行 Sp
  • 在 webview 开始加载之前操作它获取的 url

    我想将当前位置作为请求变量添加到 web 视图中加载的 URL 这样我就可以在页面上使用此信息 而无需重新加载或额外请求 我有一个带有 shouldOverrideUrlLoading 的 WebviewClient 但是当使用 loadU
  • 自动调用作为子程序引用的哈希值

    我有一个哈希值 其中一些值不是标量数据 而是返回标量数据的匿名子例程 我想让这对在哈希中查找值的代码部分完全透明 这样它就不必知道某些哈希值可能是返回标量数据的匿名子例程 而不仅仅是普通的旧值标量数据 为此 有没有办法让匿名子例程在访问其键
  • 使用pivot_wider()“传播”多个变量

    使用 传播 多个变量的最佳方法是什么pivot wider 在开发版本中tidyr https tidyr tidyverse org dev reference pivot wider html devtools install gith
  • 如何对多种类型进行一种显式专业化?

    考虑如下所示的模板函数 如何才能显式地将函数的一个版本专门化为多种类型 template