使用非常量表达式作为模板参数

2024-04-02

这是后续如何获取可变参数模板类中函数指针的参数类型? https://stackoverflow.com/questions/9065081/how-do-i-get-the-argument-types-of-a-function-pointer-in-a-variadic-template-cla

我有这个结构来访问可变参数模板的参数:

template<typename T> 
struct function_traits;  

template<typename R, typename ...Args> 
struct function_traits<std::function<R(Args...)>>
{
    static const size_t nargs = sizeof...(Args);

    typedef R result_type;

    template <size_t i>
    struct arg
    {
        typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
    };
};

我访问 Args 参数的类型

typedef function<void(Args...)> fun;
std::cout << std::is_same<int, typename function_traits<fun>::template arg<0>::type>::value << std::endl;

但是,我想迭代参数以便能够处理任意数量的参数。以下不起作用,但为了说明我想要的:

for (int i = 0; i < typename function_traits<fun>::nargs ; i++){ 
    std::cout << std::is_same<int, typename function_traits<fun>::template arg<i>::type>::value << std::endl;
}

您需要按照以下方式进行编译时迭代

template <typename fun, size_t i> struct print_helper {
    static void print() {
        print_helper<fun, i-1>::print();
        std::cout << std::is_same<int, typename function_traits<fun>::template arg<i-1>::type>::value << std::endl;
    }
};

template <typename fun> struct print_helper<fun,0> {
    static void print() {}
};

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

使用非常量表达式作为模板参数 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现

随机推荐

  • Silverlight:拉伸到 StackPanel 中的剩余空间

    我有一个带有两个元素的垂直 StackPanel 一个按钮和一个列表框 如何让列表框拉伸到剩余页面高度
  • 将一个 Artifactory 连接到另一个 Artifactory

    我们的设置包括一个全公司范围的 Artifactory 它保存内部构建的工件 并出去获取公开可用的工件 我正在尝试在我们的位置建立一个本地 Artifactory 它将通过常规互联网获取公开可用的工件 但会连接到公司范围内的 Artifac
  • Python open("x", "r") 函数,我如何知道或控制文件应该具有哪种编码?

    如果 python 脚本使用open filename r 函数打开并随后读取文本文件的内容 我如何知道该文件应该具有哪种编码 请注意 由于我是从自己的程序执行此脚本 因此如果有任何方法可以通过环境变量来控制它 那么这对我来说就足够了 顺便
  • Python 中子类化 string.Template 的示例?

    尽管我在文档中看到了多次这样做的参考 但我还没有找到在 Python 中子类化 string Template 的好例子 网上有这方面的例子吗 我想将 更改为不同的字符 并且可能更改标识符的正则表达式 来自蟒蛇docs http docs
  • 谷歌应用程序引擎中的 OAuth

    我正在尝试在 python 上的谷歌应用程序引擎中实现 Oauth 对于我的应用程序 我使用 gae 会话和我的模型来验证用户身份 这对我来说会更有帮助 如果你能提供一些例子 您可能想查看以下资源 The App Engine OAuth
  • 如何测量 Spark 上查询的执行时间

    我需要测量 Apache Spark Bluemix 上查询的执行时间 我尝试过的 import time startTimeQuery time clock df sqlContext sql query df show endTimeQ
  • iOS:跨viewControllers在导航栏下方添加视图

    我有一个这样的项目 但我试图弄清楚如何在整个导航栏的导航栏下方添加横幅 以便在需要时可以将其隐藏 你们中有人知道我该怎么做吗 在主视图控制器中实现协议UINavigationControllerDelegate并在选择器中navigatio
  • in_array() 无法按预期工作[重复]

    这个问题在这里已经有答案了 对于这个数组 options Array 0 gt 0 1 gt 1 2 gt 2 PHP 返回 TRUE this gt assertTrue in array Bug options TRUE this gt
  • .NET 的 SFTP 库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • OpenLayers 标记图标问题

    我正在我的网站中创建 OSM 地图 并使用 openlayer 添加一些标记 我的问题是我总是得到相同的标记图标
  • 有没有办法重置 Julia 中的当前工作目录?

    假设当前工作目录是C 保存 jl文件的目录 然后我将cwd切换到一些子文件夹来执行一些任务 有没有办法直接将cwd重置回C 之后 即最初的cwd 或者 是否可以独立于当前工作目录来定位正在运行的 jl 文件所在的目录 无需事先将 cwd 保
  • 如何在页面中自动刷新Cognito Token

    我使用 AWS Cognito 服务进行身份验证 在我的 Angular 7 应用程序中 我使用 Amplify Auth 来保护我的页面 如果用户在不同页面之间导航 Amplify 将自动处理令牌刷新 并且他们不会看到令牌过期 如果用户长
  • Pydev 显示未解决的导入,但脚本运行?

    我正在使用 PyDev 我正在尝试将我的项目类组织到包中 例如在一个文件夹中 我有一个模块 libraries fund price library py 在我的项目的另一个文件中 我尝试使用以下方式导入 from libraries fu
  • 如何提取文本中使用的关键字? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的
  • 使用 glFrustum 进行离轴投影

    我正在尝试使用 OpenGL 对场景进行离轴投影 并且我阅读了该文档罗伯特 库伊马的离轴投影 http csc lsu edu kooima pdfs gen perspective pdf现在对实际需要做什么有了更好的了解 但仍然有一些部
  • Java PaintComponent 告诉是否再次调用

    谷歌搜索了几天 我不知道如何判断在处理paintComponent时是否调用了paintComponent 这个过程漫长而复杂 如果我有第二个 或第三个 绘制请求 我想中止当前的绘制过程并重新开始最近的请求 你不能 打电话给paintCom
  • TensorFlow 2.0 中不再提供投影变换,我该怎么办?

    我的团队正在切换到 TensorFlow 2 0 我正在研究数据增强管道 TensorFlow 1 X 有tf contrib image transform允许投影变换 TensorFlow 中没有变换函数tf image它肯定没有tf
  • AzureDev Ops CI 构建未更新版本 (VersionPrefix)

    我有一个 Azure DevOps 管道 其中包含本地 nuget 包到本地工件存储库 然后推送到 nuget org 但是它不会更新版本并保持在1 0 0 build ver 在本地 azure DevOps 项目工件中 同时版本卡在包的
  • 如何根据控件的属性(Top/Tabstop)设置WPF动画BeginTime

    我有一个 WPF 应用程序 它在垂直堆栈面板中具有一系列按钮 类似于 DVR 菜单的外观 我想出了如何制作一个动画 当每个新的菜单页面加载时 按钮 控件全部 unfade fall deblur 无论什么 都存在 这很好 但有点太统一了 我
  • 使用非常量表达式作为模板参数

    这是后续如何获取可变参数模板类中函数指针的参数类型 https stackoverflow com questions 9065081 how do i get the argument types of a function pointe