constexpr 和 RTTI

2023-12-03

我想做这样的事情:

template <typename T>
constexpr ::std::size_t type_name_hash()
{
  return ::std::hash<::std::string>()(typeid(T).name());
}

现在,我都不知道hash nor string are constexpr,但这可以解决,假设它们是constexpr。我想问的是,如果RTTI已打开,应该constexpr函数计算哈希值typeid(T).name()仍然产生编译时常量?什么时候怎么样RTTI已关闭?


typeid(type-id) 和 typeid(expr) 都可以用在常量表达式中,除了 if (如前所述)expr的结果是多态类类型的左值。

然而,由于没有一个type_info的标准成员是constexpr(包括hash_code()方法),除了获取其地址之外,您不能对该对象执行任何操作。标准中甚至没有保证对象已初始化。即使获取地址也几乎没有用,因为不能保证 typeid() 在与相同类型一起使用时具有相同的结果。例如。以下断言可能会失败:

static_assert(&typeid(int) == &typeid(int), "Multiple type_infos for int");

这是一个人为的例子,但这并非闻所未闻typeid(T)相同的结果会产生不同的结果T在程序中使用的多个共享库中,甚至可能在不同的翻译单元中。

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

constexpr 和 RTTI 的相关文章

  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • ASP.Net MVC4 将“创建视图”绑定到包含列表的模型

    你好 在互联网领域 我有一个有趣的难题要问你 如果该对象包含纯粹使用 MVC 视图 部分视图的其他对象的列表 是否可以绑定视图来创建对象 伙计 结果很复杂 就像 让我给你一个快速的代码示例来说明我的意思 Models public clas
  • mongodb是否会自动在嵌入文档的_id字段上创建索引?

    在 node js 项目上使用 mongodb 和 mongoose 我想知道是否必须在嵌入项目的 id 字段上确保索引 也就是说 我看到 mongodb 自动在集合的 id 字段上创建索引 它是否也对嵌入集合的 id 字段执行相同的操作
  • 使用反射在抽象类中创建实例

    是否可以使用反射在抽象祖先类中创建派生类的实例 可以说 abstract class Base public Base createInstance using reflection Class ctor c getConstructor
  • Google 日历 api(超出日历使用限制)

    我在我的 php 项目中使用 Google Calendar Api 每天在执行插入查询时都会收到 超出日历使用限制 消息 但删除和列表方法工作正常 这是我的插入功能 谁能帮我 function insertEvent start end
  • 使用复选框在 ReactJS 中保存表单值

    我使用反应钩子表单创建了一个表单组件 该组件由一组复选框和一个文本输入组成 当用户单击最后一个复选框时出现文本输入custom 这个的想法是 当用户单击时 会出现一个文本输入 并且用户可以添加自定义答案 选项 例如 如果用户输入test在输
  • Django:通过查询计算列值的总和

    我有一个模型 class ItemPrice models Model price models DecimalField max digits 8 decimal places 2 我尝试用这个来计算总和price在此查询集中 items
  • 两个卷积层之间的互连

    我有一个关于 CNN 中两个卷积层之间互连的问题 例如假设我有这样的架构 输入 28 28 conv1 3 x 3 滤波器 编号 过滤器数量 16 conv2 3 x 3 滤波器 编号 过滤器数量 32 假设图像尺寸没有减小 经过 conv
  • 值传递和 std::move 相对于引用传递的优点

    我现在正在学习C 尽量避免养成坏习惯 据我了解 clang tidy包含许多 最佳实践 我尝试尽可能地坚持它们 尽管我不一定理解why它们还被认为是好的 但我不确定我是否理解这里推荐的内容 我使用了教程中的此类 class Creature
  • 如何使用 Mongoose 删除数据库?

    我正在 Node js 和 Mongoose 中准备一个数据库创建脚本 如何检查数据库是否已存在 如果存在 则使用 Mongoose 删除 删除 它 我找不到用 Mongoose 删除它的方法 没有方法可以从猫鼬中删除集合 您能做的最好的事
  • Oracle 根据出生日期和今天计算年龄

    我想在 Oracle 函数中根据出生日期计算当前年龄 我正在使用的是 Today Dob 30 12 但这并不准确 因为有些月份有 31 天 我需要以最高精度获得正确的年龄 我怎样才能做到这一点 SQL gt select trunc mo
  • 带有附加列的sql批量插入

    csv 文件包含 8 列 col1 col2 col8 文件名也包含必须插入表中的日期 如果表中的列数和 csv 文件中的列数相等 则以下查询将文件中的所有记录导入到表中 query BULK INSERT real data FROM p
  • 如何从分类分布中抽取样本

    我有一个 3D numpy 数组 其中最后一个维度中包含每个类别的概率 就像是 import numpy as np from scipy special import softmax array np random normal size
  • 在控制台显示上对齐 printf() 列并防止溢出到下一行?

    printf processid t threadid t refilling t drinking t thinking t waiting t terminated t p type t required t consumed t wa
  • 如何在循环中追加多个 pandas DataFrame?

    我已经在这个 python 问题上苦苦挣扎了一段时间 但陷入了困境 我正在循环遍历多个 csv 文件 并希望有一个数据框以每个 csv 文件中的一列作为列名称并设置 date time 的公共索引的方式附加 csv 文件 有 11 个 cs
  • RoR 3 限制用户每天发帖 2 条

    我正在寻找方法限制我的用户每天发帖次数不超过两次 并且每周发帖次数不超过 5 个 我有一个用户和帖子模型 控制器 我一直在研究这些问题 但它们并不完全是我想要的 Rails 3 1 限制用户创建的对象 如何验证 Rails 中的时间 限制用
  • Fortran if 语句中的隐式转换整数 <--> 逻辑

    我有一些遗留的 Fortran 代码 我被要求分析它们并将其翻译成现代语言 我不知道过去使用哪个编译器来编译代码 所以现在我尝试使用 gfortran 来编译它 该代码包含这样的语句 导致 gfortran 抱怨 program test
  • 将元素形成 numpy 数组作为另外两个 numpy 数组时出现广播错误

    我正在尝试生成一个 numpy 数组 其元素作为另外两个 numpy 数组 如下所示 W1b1 np zeros 256 161 W2b2 np zeros 256 257 Wx np array W1b1 W2b2 dtype np ob
  • 具有空布局的 JPanel 类不显示组件

    因此 我创建了一个 CustomPanel 类的对象 该对象创建一个带有 GridLayout 的 JPanel 和其中的标签 然后将其添加到我的 JFrame 中 它可以很好地显示标签 HELLO 但是当我将 jpanel 的布局管理器更
  • 带有单位的 POSIXct 的差异,就像 difftime 一样

    我有一个 POSIXct data 向量 想要计算连续元素之间的差异 就像通过diff e g burst lt as POSIXct c 2016 11 07 17 20 52 2016 11 07 16 21 52 2016 11 07
  • constexpr 和 RTTI

    我想做这样的事情 template