如何检查成员函数是否有 const 重载?

2023-12-12

可以说我有

struct foo {
    void ham() {}
    void ham() const {}
};

struct bar {
    void ham() {}
};

假设我有一个模板化函数,我可以判断给定类型是否具有 const 重载ham?


With

#define DEFINE_HAS_SIGNATURE(traitsName, funcName, signature)               \
    template <typename U>                                                   \
    class traitsName                                                        \
    {                                                                       \
    private:                                                                \
        template<typename T, T> struct helper;                              \
        template<typename T>                                                \
        static std::uint8_t check(helper<signature, &funcName>*);           \
        template<typename T> static std::uint16_t check(...);               \
    public:                                                                 \
        static                                                              \
        constexpr bool value = sizeof(check<U>(0)) == sizeof(std::uint8_t); \
    }

DEFINE_HAS_SIGNATURE(has_ham_const, T::ham, void (T::*)() const);

And then

static_assert(has_ham_const<foo>::value, "unexpected");
static_assert(!has_ham_const<bar>::value, "unexpected");

Demo

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

如何检查成员函数是否有 const 重载? 的相关文章

  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • C# 开源 NMEA 解析器 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 开源 NMEA 解析器 嗯 我自己也不熟悉 但是一些快速搜索显示了一个代码项目 htt
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 使用查询表达式对 List 进行排序

    我在使用 Linq 订购这样的结构时遇到问题 public class Person public int ID get set public List
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 搜索实体的所有字段

    我正在尝试在客户数据库上实现 多功能框 类型的搜索 其中单个查询应尝试匹配客户的任何属性 这是一些示例数据来说明我想要实现的目标 FirstName LastName PhoneNumber ZipCode Mary Jane 12345
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 如何使用 NPOI 按地址(A1、A2)获取 Excel 单元格值

    我有一个 Excel 单元格地址 例如 A1 A2 如何使用 C 中的 NPOI 框架以编程方式访问此单元格 我找到的一些 Java POI 示例代码 CellReference cr new CellReference A1 row my
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • 如何停止无限循环?

    我正在编写一个程序 该程序将计算三角形或正方形的面积 然后提示用户是否希望计算另一个 我的代码已经运行到可以计算任一形状的面积的程度 但随后不再继续执行代码的其余部分 例如 如果选择了正方形 则计算面积 然后返回到正方形边长的提示 我假设这
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 使用 using 声明时,非限定名称查找如何工作?

    根据 C 标准 这是格式错误还是格式良好 namespace M struct i namespace N static int i 1 using M i using N i int main sizeof i Clang 拒绝它 GCC
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne
  • 结构化绑定的用例有哪些?

    C 17 标准引入了新的结构化绑定 http en cppreference com w cpp language structured binding功能 最初是proposed http www open std org jtc1 sc
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • 从 C++ 拦截 Fortran STOP

    我准备了一个与旧版 Fortran 库的 C 接口 遗留库中的一些子例程遵循丑陋但可用的状态代码约定来报告错误 并且我使用此类状态代码从我的 C 代码中抛出可读的异常 它工作得很好 另一方面 有时遗留库会调用STOP 终止程序 即使病情可以
  • Flutter 导航栏 - 从另一个页面更改选项卡

    我希望能够以编程方式更改导航栏选项卡 我在 Page1 中有一个导航到 Page2 的按钮 当我执行此操作时 导航栏消失 因为我没有使用导航栏选择 page2 我有 4 个 dart 文件 分别是 navigationbar dart pa
  • 背景尺寸覆盖IE11未覆盖整个区域

    我要发疯了 IE11 拒绝用背景图像填充 DIV 的整个区域 即使我已将背景大小属性设置为 cover 考虑以下示例 CSS bg width 100 min height 220px background url bg jpg cente
  • WAMPServer phpMyadmin 超出最大执行时间 360 秒

    我刚刚安装了WampServer 当我访问我的项目页面时它有效 但是当我尝试导航 phpMyAdmin 时 我收到此错误 超过最大执行时间 360 秒 问题是什么 这里更好的解决方案是更改控制 phpMyAdmin 的配置 而不是更改php
  • 为按钮提供相等宽度约束时,自动布局未正确设置

    我看到很多解决方案并应用了自动布局约束 但我仍然没有得到所需的解决方案 当前结果 给予所有按钮的约束 查看层次结构 假设您想要的是让 3 个按钮彼此相等并使用 Interface Builder 填充屏幕宽度 没有代码 即 不以编程方式 这
  • 允许基于范围的 For 与枚举类吗?

    我有一个经常出现的代码块 我在其中循环了一个的所有成员enum class The for与新的相比 我目前使用的循环看起来非常笨重range based for 有没有办法利用新的 C 11 功能来减少我当前的冗长内容for loop 我
  • p:media 包含 PDF 文件会导致“文件不以 '%PDF-' 开头。” IE7 出现错误

    我在用着
  • 返回 true 或 false 或抛出异常 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 java version 1 7 0 75 Hello 只是想知道比较以下两个函数的首选最佳实践是什么 第一个抛出 NullPointerException 应在调用函数中捕获该异常 如果
  • 如何在 Android 中的视图上收听双击? [复制]

    这个问题在这里已经有答案了 我想检测一个doubletap在视图上 例如button 然后知道它是哪个视图 我见过这个类似的问题但他们说这是重复的问题似乎并没有回答我的问题 我所能做的一切find是添加一个GestureDetector到活
  • onActivityResult 的intent.getPath() 没有给我正确的文件名

    我正在尝试以这种方式获取文件 final Intent chooseFileIntent new Intent Intent ACTION GET CONTENT String mimetypes application pdf choos
  • 模拟单元测试引发“停止调用未启动的修补程序”错误

    当运行下面的测试时 我得到了stop called on unstarted patcher def test get subvention internal no triggered admission self billing clus
  • 从 SQLite 获取 int 值

    我听说使用sqlite3 prepare v2代替sqlite exec从数据库获取整数 但我找不到任何示例 This页面也没有帮助 现在我从数据库获取字符串 所以我需要用atoi这似乎是缓慢且无效的 SO 上有很多类似的问题 但它们都是关
  • 在java中查找字符串中第n次出现的子字符串?

    我有一个字符串 它是 html 页面的完整内容 我试图找到第二次出现的索引 有人对如何实现这一目标有任何建议吗 这是一个有趣的镜头 public static int findNthIndexOf String str String nee
  • OpenGL ES 2.0 推荐的练习环境?

    我决定学习一些 OpenGL ES 2 0 并尝试为其选择一个练习平台 可能的目标平台可能是 Android iPhone 或 WebGL 但我不想花费太多时间和精力来正确设置环境 您会推荐 WebGL 来快速开始 OpenGL ES 2
  • iOS 7 XCode 5 Storyboard 将方向设置为横向

    我已将项目设置中允许的方向设置为仅横向 现在我想在故事板上进行设计 但故事板是纵向的 我只支持横向 所以我尝试使故事板面向横向 我转到模拟指标 但我没有看到任何说 方向 的东西 只是ViewController 的东西 如布局 扩展边缘 过
  • Numpy 的 FFT 与 Intel MKL

    Running numpy fft fft np eye 9 norm ortho 导致TypeError fft got an unexpected keyword argument norm 我正在使用 Intel MKL 运行 Num
  • 如何按日期对数组中的项目进行分组?

    给定以下对象数组 notes Game was played time 2017 10 04T20 24 30 00 00 sport hockey owner steve players 10 game id 1 notes Game w
  • Python 程序如何确定它正在哪个内核上运行?

    我需要调试一个使用以下命令的 Python 3 程序multiprocessing module 我想跟踪 多核机器的 哪些核心正在使用以及如何使用 Q 我正在寻找一种方法让 Python 代码确定哪个核心正在运行它 我发现的最接近的是使用
  • Bug:无法使用 JDK 8 启动 NetBeans 7.3

    I have NetBeans 7 3我将 JDK 升级为1 8 现在我尝试打开 NetBeans 并得到Loading Cached Objects加载窗口上显示消息 然后 NetBeans 终止 我收到以下异常 可在 var log m
  • 如何检查成员函数是否有 const 重载?

    可以说我有 struct foo void ham void ham const struct bar void ham 假设我有一个模板化函数 我可以判断给定类型是否具有 const 重载ham With define DEFINE HA