用于检测模板特化的模板元函数

2023-11-23

灵感来自这个问题,我想知道是否可以引入一些编译时检查来检测是否有两个给定的模板实例化:

template <typename T>
class Templ...

typedef Templ<std::string> stringInstance;
typedef Templ<double> doubleInstance;

是根据相同的定义构建的,或者它们是根据不同的专业化构建的Templ模板

所以基本上假设的模板函数的行为如下:

template <typename T>
class Templ
{}

template <>
class Templ<std::string>
{}

template <>
class Templ<double>
{}

template <typename T1,typename T2>
class Belong_To_Same_Templ_Definition
{}

//tests
typedef Templ<std::string> stringInstance;
typedef Templ<double> doubleInstance;
typedef Templ<int> intInstance;
typedef Templ<char> charInstance;

assert( Belong_To_Same_Templ_Definition< intInstance , charInstance >::value == true);
assert( Belong_To_Same_Templ_Definition< intInstance , doubleInstance >::value == false);
assert( Belong_To_Same_Templ_Definition< stringInstance , doubleInstance >::value == false);

可以创建这种元函数吗?


老实说,这似乎不太可能(尽管我不能明确排除这是一个狡猾的把戏)。

对于给定的专业化(在选择它的类型参数之外)没有一流的标识来进行比较。

因此,如果您愿意,您可以使其与您自己的模板一起使用,但您无法为现有模板编写临时推理。

还要考虑到它无论如何都不行,从某种意义上说,它无法判断两个实例化是否具有兼容的布局:即使Templ<int> and Templ<char>从相同的模板代码实例化,没有专门化,该代码可以使用特征类are专门。

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

用于检测模板特化的模板元函数 的相关文章

  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib
  • 如何关闭整个数据库的区分大小写

    我创建了一个包含许多脚本和许多存储过程的数据库 在这个数据库中 我们没有注意担心区分大小写 因为它对于我的本地开发计算机来说是关闭的 综上所述 我试图弄清楚如何使以下两条语句返回相同的结果 SELECT FROM companies SEL
  • 使用 alpha 通道叠加两个 ggplot2 stat_密度2d 图

    我想叠加两个ggplot2使用 alpha 通道进行绘图 结果图像显示两个数据集 这是我的测试数据 data read table text P1 1 0 4 nP2 0 0 2 nP3 2 1 8 nP4 2 2 6 nP5 0 5 2
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 将 r 中的一列从出生日期更改为年龄

    我是第一次使用 data table 我的表中有大约 400 000 个年龄的列 我需要将它们从出生日期转换为年龄 做这个的最好方式是什么 我一直在思考这个问题 到目前为止对这两个答案都不满意 我喜欢用lubridate 就像 KFB 所做
  • Rails 未定义“2013-03-06”的方法“strftime”:字符串

    我收到错误 2013 03 06 的未定义方法 strftime 字符串 当尝试使用 strftime 从字符串 2013 03 06 正常显示日期 2013 年 6 月星期日 3 日或类似的日期 时 在我的 index html erb
  • 如何(安全)将 Python 对象发送到我的 Flask API?

    我目前正在尝试构建一个 Flask Web API 它能够在 POST 请求中接收 python 对象 我使用 Python 3 7 1 创建请求 使用 Python 2 7 运行 API 该 API 设置为在我的本地计算机上运行 我试图发
  • 如何从地址簿中获取一个人的电话号码?

    我想做的就是让用户从地址簿中选择一个号码 我在这个问题中找到了代码 如何从地址簿联系人获取电话号码 iphone sdk https stackoverflow com questions 286207 how to get a phone
  • 即使调整大小,如何获得屏幕的精确中间位置

    好的 这个问题有两部分 当我做一个JFrame 并在其上画一些东西 即使我将宽度设置为 400 并使其在一个项目击中它时 当然 允许项目宽度 它会反弹回来 但由于某种原因 它总是偏离屏幕约 10 个像素 有没有办法解决这个问题 或者我只需要
  • LifeCycleAware Fragment 中的片段生命周期事件

    我有一个生命周期感知片段和一个LifecycleObserver class public class MyFragment extends Fragment Override public void onCreate Nullable B
  • 定义在文本小部件中双击时选择哪些字符

    在 Windows 上 双击文本小部件中的单词也将选择连接的标点符号 有什么方法可以定义您想要选择的角色吗 tcl wordchars该变量的值是一个正则表达式 可以设置它来控制什么被视为 单词 字符 例如 通过双击 Tk 中的文本来选择单
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时
  • 使用
    元素作为 JavaScript 代码的输入。这是最好的方法吗?

    各位 显然 我是编码新手 所以最近完成了一些有关 HTML 和 Javascript 的 Lynda 课程后 我的简单 HTML 页面遇到了困难 基本上 我想要的是使用 JavaScript 进行基本计算 让用户使用 HTML 输入两个数字
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 气流 外部传感器卡在戳戳处

    我希望一个 dag 在另一 dag 完成后开始 一种解决方案是使用外部传感器功能 您可以在下面找到我的解决方案 我遇到的问题是依赖的 dag 卡在 poking 上 我检查了这个answer并确保两个 dags 按相同的时间表运行 我的简化
  • 将“元组列表”转换为平面列表或矩阵

    使用 Sqlite select from命令返回结果output 打印 gt gt print output 12 2817 12 2817 0 0 8 52 8 52 它似乎是一个元组列表 我想转换output一个简单的列表 12 28
  • Firebase 真正的离线功能

    我正在尝试了解 Android 上的 Firebase 离线功能实际上能达到什么程度 据我了解 应该可以使数据库 持久化 FirebaseDatabase getInstance setPersistenceEnabled true 文档内
  • 我应该将 go depvendor/ 添加到 .gitignore 吗? [复制]

    这个问题在这里已经有答案了 我应该添加go dep vendor 文件夹到 gitignore 我现在有vendor in gitignore 所以每次部署都会调用dep ensure github gitignore Go gitigno
  • 滤波器阵列 - 奇偶

    如何过滤掉具有奇数或偶数索引号的数组条目 Array 0 gt string1 1 gt string2 2 gt string3 3 gt string4 就像 我希望它从数组中删除 0 和 2 条目 或者说我有 0 1 2 3 4 5
  • 良好的线程 C++ 库

    我更喜欢仅基于 pthreads 的库 对于线程来说 什么是好的 C 库 怎么样增强线程 Boost Thread 允许使用 多线程执行 可移植 C 代码中的共享数据 它 提供类和函数 管理线程本身 与其他人同步数据 线程之间或提供 特定于
  • Windows API 保留参数

    我想知道为什么有些函数有一些参数由于 保留参数 而必须设置为 NULL 例如 LONG WINAPI RegQueryValueEx in HKEY hKey in opt LPCTSTR lpValueName reserved LPDW
  • CSS 子选择器 (>) 不适用于 IE

    下面的 CSS 在 Firefox 下运行良好 但在 IE 浏览器下不起作用 为什么 另外 如何才能只让父元素正下方的元素受 CSS 影响 CSS box font 24px box gt div font 18px box gt div
  • 使用 cabal 安装库时无法解决依赖关系

    我尝试在 Window 10 上使用 cabal 安装库的每一次努力都导致了同样的错误 cabal install gtk cabal exe Could not resolve dependencies 0 trying parconc
  • 如何使用react-native更改Textinput中的电话号码格式

    i want the phone number work Phone format to be as shown in the below image using react native can any one help how to w
  • iOS 上的 Google Analytics:未跟踪事件

    我按照 Google 指南中提供的说明将 Google Analytics SDK 添加到我的项目中 但是 当我尝试跟踪某些事件时 这是调试输出 BOOL application UIApplication application didF
  • 从文本中获取 url [重复]

    这个问题在这里已经有答案了 可能的重复 包含查询字符串的 URL 正则表达式 我有一条短信或消息 嘿 尝试这个http www test com test aspx id 53 我们的要求是从文本中获取链接 我们正在使用以下代码 List
  • Meteor :等待所有模板渲染完毕

    我有以下模板代码
  • 为什么 IEnumerable.Select() 在两种情况之一中起作用?无法从使用情况推断

    我明白了错误信息 The type arguments for method System Linq Enumerable Select
  • 在ggplot箱线图中显示填充组内的单独平均值

    我有一个使用 3 个类别的数据的分组箱线图 一个类别设置为箱线图的 x 轴 另一个类别设置为填充 最后一个类别设置为分面类别 我想显示每个填充组的平均值 但使用stat summary只给出 x 轴类别的平均值 而不分离填充的平均值 这是当
  • 在 Google BigQuery 中创建 UUID 列

    谷歌大查询不支持UUID作为数据类型 那么 哪个选项更好地存储它 STRING 格式为 8 4 4 4 12 的字符串 BYTES 16字节 128位 的数组 编辑 BigQuery 现在支持函数称为GENERATE UUID 这会返回一个
  • Streamwriter 与 StringBuilder

    哪一种效果更好或更正确 是不是更好地创建一个对象StreamWriter类并在方法中频繁使用它并最终处理它 还是使用来自的对象更好StringBuilder然后从中创建一个对象StreamWriter并立即处置 1 var Write ne
  • 无法使用 Ctrl-C 终止 Python 脚本

    我正在使用以下脚本测试 Python 线程 import threading class FirstThread threading Thread def run self while True print first class Seco
  • JavaScript 中的解构赋值

    正如在 JavaScript 1 7 的 Mozilla 变更日志中可以看到的 他们添加了解构赋值 遗憾的是我不太喜欢这种语法 为什么要写两次 a 和 b var a b a b f 像这样的事情会好得多 var a b f 那仍然是向后兼
  • 用于检测模板特化的模板元函数

    灵感来自这个问题 我想知道是否可以引入一些编译时检查来检测是否有两个给定的模板实例化 template