如何制作可变参数 is_same?

2024-03-10

如何制作一个类模板来返回其任何可变参数类型是否等于第一种类型。我希望能够做到这一点:

is_same<T, A, B, C>::value; // true if T is one of A, B or C

And if T等于这些类型中的任何一种,其静态value成员将是true, 否则false。我怎样才能做到这一点?


C++17 简洁明了:

template <class T, class... Ts>
struct is_any : std::disjunction<std::is_same<T, Ts>...> {};

以及对偶:

template <class T, class... Ts>
struct are_same : std::conjunction<std::is_same<T, Ts>...> {};

使用折叠表达式的变体:

template <class T, class... Ts>
struct is_any : std::bool_constant<(std::is_same_v<T, Ts> || ...)> {};

template <class T, class... Ts>
struct are_same : std::bool_constant<(std::is_same_v<T, Ts> && ...)> {};

或者作为 C++20 概念:

template <typename T, typename... Ts>
concept is_any = std::disjunction_v<std::is_same<T, Ts>...>;

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

如何制作可变参数 is_same? 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • Newtonsoft JSON PreserveReferences处理自定义等于用法

    我目前在使用 Newtonsoft Json 时遇到一些问题 我想要的很简单 将要序列化的对象与所有属性和子属性进行比较以确保相等 我现在尝试创建自己的 EqualityComparer 但它仅与父对象的属性进行比较 另外 我尝试编写自己的
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • 故事板segue 显示从底部垂直而不是水平的过渡

    我有一个基本的故事板设置 可以通过单击按钮来通过一些视图控制器进行转换 我还在故事板的根部设置了一个导航控制器 希望这个 Segue 链的性能与一系列 Pushes 过去的工作方式类似 功能都在那里 导航栏控制也是如此 但是过渡都有从底部进
  • 计算非常大的矩阵的逆

    我正在尝试用 C 计算一个非常大的矩阵 11300x21500 的逆 到目前为止 我已经尝试过 Eigen 和 Armadillo 库 但都在初始化阶段失败 说没有足够的内存 有什么办法可以克服这种情况吗 提前致谢 P S I should
  • 使 Linearlayout 可滚动而不使用 Scrollview

    我有一个 Linearlayout 我想使其可滚动而不使用 ScrollView 是否可以 任何建议将不胜感激 详细信息如下 如果我使用 ScrollView 包装 LinearLayout 那就可以了 但是当我在 LinearLayout
  • 如何在 Alamofire 中使用 NetworkReachabilityManager

    我想要类似的功能AFNetworking在 Objective C 中 在 Swift 中使用 Alamofire NetworkReachabilityManager Reachability detection AFNetworkRea
  • Ruby 使用什么哈希函数?

    Ruby 的哈希函数算法是什么 标准 Ruby 实现使用杂音哈希 http murmurhash googlepages com 对于某些类型 整数 字符串 来自 string c 1901 MurmurHash described in
  • _("text"),即下划线括号字符,有什么作用? [复制]

    这个问题在这里已经有答案了 在 C 代码中我遇到了这一点 test 它有什么作用 我试图自己查找它 但正如你可以想象的那样 搜索引擎不支持搜索 它正在调用名为的函数 例如 include
  • 依赖注入:海龟一路向下?

    所以我想知道单元测试如何处理外部依赖项 在这里和其他地方 我已经熟悉了依赖注入 以及它如何允许我们测试代码单元 A 但是 我对如何测试其他单元 B 和 C 感到困惑 这些单元现在拥有外部依赖项 以便它们可以将其注入到原始单元 A 中 例如
  • 在整数规划中使用最小/最大运算符

    我正在尝试使用整数规划优化目标函数 我必须使用Max我的函数中的运算符 我想知道有什么办法可以处理这个问题吗 其实我的问题类似于使用最小 最大within整数线性规划 https stackoverflow com questions 10
  • Tinkerpop 框架写入数据库 - 新手

    我第一次使用 Frames 但我的 Java 还很生疏 我一直坚持通过框架将信息写入数据库 我一直在关注文档并拥有一个 Person 界面 public interface Person Property name public Strin
  • Magento 新购物车属性

    嗨 我面临的问题一开始似乎很简单 但现在变成了一场真正的噩梦 我被要求向所有产品添加一个属性 即点 使用管理面板非常简单地完成 并将其总计作为可以设置规则的购物车属性 我非常肯定购物车属性是在以下位置定义的 class Mage Sales
  • 实例化接口而不使用实现类

    我有一个接口 称为 Planet 其实现类受到保护 并且我无法更改其访问修饰符 但是 我需要在主类中调用实现类的方法 例如 在实现类中 我有 public void orbit distance 我努力了 private Planet pl
  • 因此更改了 Git 的默认编辑器,现在我如何从 Git bash 调用它?

    我通过将以下内容应用于 Git 的全局配置来更改 Git 的默认编辑器 core editor C Program Files Notepad notepad exe multiInst notabbar nosession noPlugi
  • 如何删除CheckBox右侧不需要的空格?

    我正在研究自定义列表视图 我想展示一个CheckBox在自定义视图中 没有文字说明CheckBox 我发现它的右侧总是有一些空格CheckBox 这是我的布局 xml 文件
  • 使用 LINQ to SQL 时如何抽象出持久性代码?

    我喜欢 LINQ to SQL 但一直困扰我的是 在使用它时 我的存储库代码由 LINQ to SQL 框架生成 因此与 SQL Server 数据库紧密耦合 你们中是否有人以抽象 松散耦合的方式使用 LINQ to SQL 如果是 您是如
  • 当窗口顶部到达特定元素时将类添加到 DIV,并在未到达时将其删除

    我有一个 navigation在包装纸的顶部 我想添加一个 fixed类 当窗口顶部到达 bottomDIV 并在顶部时删除此类 bottom位于窗口范围内 它是在添加和删除 fixed 类之间切换 div div class naviga
  • “内存压力”是什么意思?

    通读一遍苔丝 费兰德斯的博客 https blogs msdn microsoft com tess 2008 04 17 how does the gc work and what are the sizes of the differe
  • 修改测试中的 Django 设置

    来自姜戈docs https docs djangoproject com en dev topics settings altering settings at runtime 您不应该在运行时更改应用程序中的设置 为了 例如 不要在视图
  • 带地图的“if”语句中的 Golang 语法

    我正在这里阅读教程 http www newthinktank com 2015 02 go programming tutorial http www newthinktank com 2015 02 go programming tut
  • 离子/云角 FacebookAuth 给出空错误

    我已将 ionic 云服务添加到我的应用程序中 并希望使用本机 FaceBook 身份验证 import FacebookAuth from ionic cloud angular this facebookAuth login 在 And
  • 如何制作可变参数 is_same?

    如何制作一个类模板来返回其任何可变参数类型是否等于第一种类型 我希望能够做到这一点 is same