如何在之前声明的另一个模板参数中使用模板参数

2024-01-23

模板参数可以在其后的另一个模板参数中使用,如下所示:

template<typename T, T N>
struct s
{
};

但是如果在“N”之后声明“T”,是否可以引用“T”?

这不起作用:

template<T N, typename T>
struct s
{
};

我们可以通过预先声明“T”或做其他事情来帮助编译器吗?

提前致谢。

编辑:正如前两个回复问“你为什么愿意这样做?”我将解释目标:

我想让编译器推断出类型“T”,以便更轻松地使用模板化类。

例如 :

template<typename T, T A, T B>
struct sum
{
    static T const value = A + B;
};

该模板可以这样使用:

sum<int, 1, 2>::value

但如果能这样使用那就更好了:

sum<1, 2>::value

从技术上讲,这应该是可能的,因为编译器知道“1”和“2”:“int”的类型,并且实际上它使用这些信息来找到函数的最佳重载。 因此,通过这样声明模板:

template<T A, T B, typename T>
struct sum
{
    static T const value = A + B;
};

编译器可以利用其功能从第一个和第二个参数提供的信息推断最后一个参数,然后找到最佳模板进行实例化。


就像其他人说的 - 不,这是不可能的,编译器无法推断出的类型T来自非类型template参数(在函数的情况下,它从function参数):

14.8.2.4/12:

模板类型参数不能从非类型模板参数的类型推导出来。

无论如何,不​​会对类模板的参数进行任何扣除。函数模板的一个示例可能是

template<int> struct having_int { };
template<typename T, T i> void f(having_int<i>);
int main() { having_int<0> h; f(h); }

在这种情况下,T不会被推导为int- 你必须明确指定它。

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

如何在之前声明的另一个模板参数中使用模板参数 的相关文章

  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map

随机推荐

  • 如何删除布局和背景之间的空间?

    我拥有的是一个相对布局 其中包含其他两个相对布局 每个布局都有图像 我已将每个图像作为其相对布局的背景 但我仍然可以看到图像 布局 和整个父布局之间的空间 那么我怎样才能删除这个空间呢 这是我的 XML 代码
  • Chrome v41+ 显示性能问题:无;在很多节点上

    我最近注意到 Chrome 在申请时出现呕吐现象display none 到很多节点 CodePen 示例 http codepen io mattdietsche pen JomjWx 在上面的 CodePen 中 您可以看到切换时的滞后
  • 基础5和页面打印

    我正在使用 Zurb 基金会 我试图完全按照大屏幕中的外观打印页面 但所有内容都堆积起来 并且浮动错误 通过将 Foundation min css 中出现的每个 屏幕 替换为 打印 屏幕 我成功地在打印页面中添加了网格 问题是现在取的格子
  • 在多租户架构中为每个租户将异常记录在单独的文件中

    我有一个支持多租户的应用程序 即一台服务器和多个数据库 每个租户都有单独的数据库 应用程序中引发的所有异常都将记录在一个日志中 租户 ID 将与异常一起打印 我想在单独的文件中处理它 即为每个租户一个单独的日志文件 这将有助于确定此异常是由
  • 如何从网页复制特定元素

    我的目标是从网页中获取特定的文本区域 想象一下 就好像您能够在页面上的任何位置绘制一个矩形 并且该矩形中的所有内容都将被复制到剪贴板中 我正在使用 FireBug 请随意建议其他解决方案 我已经搜索了插件或书签 但没有找到任何有用的东西 及
  • Android 应用程序白标 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在尝试寻找为 Android 应用程序添加白色标签的最佳方法 基本上我希望能够构建几乎相同应用程序的多个版本 每个版本将具有不同的资源 例如
  • 多个程序集中相同的完全限定类名

    当我们在两个不同的程序集中定义相同的命名空间和类名而不使用 extern 别名来帮助它决定时 NET 编译器 以及运行时的 CLR 如何确定要使用哪个类 考虑这个示例 全部都在一个 cs 文件中 using System namespace
  • 序列化包含 char* 的结构

    我在序列化 char 字符串时遇到错误error C2228 left of serialize must have class struct union我可以使用 std string 然后从中获取 const char 但我需要 cha
  • 如何从 AWS 中的 Athena 获取结果格式 JSON?

    我想从 AWS 中的 Athena 获取结果值格式 JSON 当我从 Athena 中选择时 结果格式如下 test value report 1 test report 2 normal report 3 hard 有没有办法获得 JSO
  • 如何从 AAssetManager 获取 std::basic_istream?

    我正在使用 NDK 我需要读取资源媒体文件 因此 据我了解 为了访问我需要使用的资源AAssetManager 最终我需要得到std basic istream与它一起工作 那么问题来了 如何获得std basic istream from
  • PHP 中有“nullsafe 运算符”吗?

    有没有办法使用某种方式编写以下语句安全导航操作员 http docs codehaus org display GROOVY Operators Operators SafeNavigationOperator echo data gt g
  • 最上面的“固定”位置 div 与非位置 div 一起移动

    考虑以下代码 div width 100 height 64px border 1px solid 000 top fixed position fixed middle fixed position fixed top 64px bott
  • PHP imagick或任何其他工具,如何检测gif文件上是否有可见的透明度

    我正在开发一项可以将 gif 文件转换为 mp4 文件的服务 使用ffmpeg 我的问题是有些 gif 有visible当我将它们转换为 mp4 视频时 透明区域最终会变成白色 为了避免这个问题 我正在尝试检测 gif 是否有visible
  • 发送 HTTP 标头后服务器无法设置状态 - web api CORS

    好吧 我已经为这件事拼尽全力了 设置 我有一个设置了基本身份验证的 Web Api 2 0 项目 我在 web config 中启用了 CORS 我有 ELMAH 日志记录错误 我有一个 DelegatingHandler 处理传入的请求
  • 如何获得一个 ID 来区分类的不同实例?

    假设我有一个类 有两个实例 MyClass a new MyClass MyClass b new MyClass MyClass 有一个方法 PrintUniqueInstanceID void PrintUniqueInstanceID
  • 比较两个数组,删除匹配的项

    我有两个数组 names and employees 其中填充了代表名称的字符串 names是二维的 保存对匿名数组的引用 但我们关心的数据的位置是 names i 0 我想循环遍历 names并找出哪些名字不在 employees 起初我
  • Spacy 自定义名称实体识别 (NER)“灾难性遗忘”问题

    该模型无法记住之前训练它的标签 我知道这是 灾难性的遗忘 但似乎没有例子或博客可以帮助解决这个问题 对此最常见的反应是这个博客是这样的https explosion ai blog pseudo rehearsal catastropic
  • Vue 单元测试 - 使用 vue-test-utils mount 时模拟导入的服务

    我正在使用 vue test utils 中的 mount 有一个导入应该在单元测试中模拟的服务的组件 我看到 mount 有一个模拟选项 但试图推断给出的示例指南 常见技巧 模拟注射 https github com vuejs vue
  • 如何解决“未找到 .NET SDK”的问题。错误--VSCode

    我正在尝试在本地计算机上设置后端 我已经安装了 v6 dotnet 所有内容都已安装 但是当我运行时dotnet run我收到这个错误 The command could not be loaded possibly because You
  • 如何在之前声明的另一个模板参数中使用模板参数

    模板参数可以在其后的另一个模板参数中使用 如下所示 template