C++ 类对非类型模板参数的部分特化

2024-01-10

我不确定我的术语是否正确,但我认为我有一个包含类型和非类型模板参数的类模板,并且我想部分专门研究非类型参数:

template<class T, int I> struct A
{
    void f();
};

template<class T> void A<T, 1>::f() {}

int main()
{
    A<int, 1> a1;
    a1.f();
}

使用 Visual C++ 我得到error C3860: template argument list following class template name must list parameters in the order used in template parameter list and error C2976: 'A<T,I>': too few template arguments.

但是,如果我删除类型参数,那么我似乎可以专注于非类型参数:

template<int I> struct B
{
    void g();
};

void B<1>::g() {}

int main()
{
    B<1> b1;
    b1.g();
}

那么是我想要的不可能,还是我只是没有以正确的方式做?如果不可能,有其他选择吗?


让我们考虑一下standard http://eel.is/c++draft/temp.spec#temp.expl.spec-14(工作草案)说:

类模板的成员可以显式地专门用于类模板的给定隐式实例化,即使该成员是在类模板定义中定义的。成员 [...] 的显式特化是使用显式特化语法来指定的。

换句话说,你试图做的事情是不被允许的。
就这样。


想象一下,如果是的话,你也可以这样做:

template<class T, int>
struct A { void f(); };

template<typename T>
void A<T, 1>::f() {}

template<>
struct A<int, 1> {};

也就是说,定义f对于类模板,其特化甚至不能有声明f.
这没有多大意义,不是吗?

另一方面,考虑以下成员专业化:

template<>
void A<int, 1>::f() {}

它会导致实例化A<int, 1>无法进一步专业化。
换句话说,在这种情况下你不能这样做:

template<>
struct A<int, 1> {};

的存在f不知何故保证 thus.

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

C++ 类对非类型模板参数的部分特化 的相关文章

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

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • 比较名称之间的相似度

    我必须根据名称对一些数据进行交叉验证 我面临的问题是 根据来源 名称略有不同 例如 L L AIR CONDITIONING vs L L AIR CONDITIONING Service BEST ROOFING vs ROOFING I
  • 处理异常的示例代码

    我是 Android 移动应用程序开发新手 我想知道如何处理异常HttpConnection相关异常或任何其他异常 我需要显示一个AlertDialog给用户 请提供示例代码或项目源代码以了解我如何处理HttpConnection或类似类型
  • 在 iPhone 应用程序中显示 HTML

    如何在 iPhone 的 textview 中打开 url 是否可以显示数据links photos和所有html entities 您可以使用 UIWebView 从文件加载静态包含 html 照片 css javascript NSSt
  • 将大字符串写入文件的最佳方法

    在 C 中 我正在读取中等大小的文件 100 KB 1 MB 修改部分内容 最后写入不同的文件 所有内容均为文字 修改是作为字符串对象和字符串操作完成的 我目前的做法是 使用以下命令读取原始文件中的每一行StreamReader Open
  • Firefox 拖动 div 就像拖动图像一样

    我正在使用以下 HTML CSS 和 Javascript 代码 如果您想测试的话 可以将其放在一个文档中
  • 从数据框中删除控制字符空格

    我有一个数据框 df 通过它我可以使用它来获取列表列表 data list map str n tolist for n in df values 之后我从这样的数据中替换特定的控制字符 data e replace u xa0 u for
  • SignalR WebSockets 在本地工作但不在服务器上工作

    我正在尝试让 Web Sockets 作为使用 SignalR 2 4 2 的 ASP NET 4 8 Framework 应用程序的协议 它可以在本地主机上运行 Windows 10 Pro 的 Visual Studio 2019 上正
  • 将点投影到平面上的投影矩阵

    如何确定 4x4S矩阵 以便 P 在 XZ Y 0 平面上投影到 Q 中 Q S P 射线有坐标r t L t P L 这是组件形式 r x L x t P x L x r y L y t P y L y r z L z t P z L z
  • Get-TfsItemHistory 版本参数

    我想要一种方法来从特定日期的 TFS 中查找一组不同的更改文件 通过谷歌搜索我找到了这篇文章 http blog hackedbrain com 2009 04 01 getting a distinct list of changed f
  • 我们如何使用opencart事件?

    我搜索了很多有关 opencart 触发器的信息 但没有找到合适的示例 在 opencart 2 0 中 有一些触发器 开发人员可以挂钩函数并执行一些事情 就像我猜的 wordpress 操作和过滤器一样 例如在 catalog model
  • vuetify.js 如何获取 v-container 的全宽

    我是新来的vuetify js并开始摆弄它 这是我的代码 管理面板 vue
  • 使用回形针的文件类型的自定义缩略图

    我使用 Paperclip 和 Ruby on Rails 将资产附加到模型 这些资产可以是任何文件类型 并且当前仅当资产是图像时才会生成缩略图 我希望能够为其他文件显示不同的默认图像 可以通过在上传时生成文件的缩略图 或者使用 defau
  • 为 AppStore 构建时,Parse SDK 会导致权利资源错误

    看起来 XCode6 没有对 Parse SDK 中的资源进行签名 我使用的是最新版本 1 4 1 实际的存档 构建工作正常 事实上 我还可以通过这个过程分发 AdHoc beta 版本 而且我的测试人员可以从 HockeyApp 安装 直
  • AppEngine 数据存储区中的不平等过滤器

    据我所知 Google AppEngine 仅支持每个查询一个不等式过滤器 针对此限制有哪些解决方法 有没有任何解决方案可以提供类似的效果 实际上GAE支持多个不等式过滤器 只要它们是在同一财产上 https developers goog
  • Javascript递归超时调用

    这是我尝试编写一个动态 onmouseout 事件 当鼠标离开 div 时缓慢改变不透明度 由于某种原因 递归和超时似乎没有工作属性 并且不透明度的更改是立即完成的 问题 有没有什么原因setTimeout 不适用于递归 有没有更好的方法来
  • 类构造函数中异常处理的行为

    我有这个程序 其中派生类的构造函数抛出异常 该程序只是一个示例程序 我只是想了解异常处理的概念 class A public A A std cout lt lt DTOR called A lt lt std endl class B p
  • 更改所有 QLabel 对象 PyQt5 的字体大小

    我使用 PyQt5 编写了一个 gui 最近我想将所有 QLabel 的字体大小增加到特定大小 我可以单独浏览整个代码并更改 qfont 但这效率不高 我想我可以覆盖该类并将所有 QLabel 字体大小设置为所需的大小 但是 我需要了解用
  • 错误CS0234:命名空间“System.Web”中不存在类型或命名空间名称“Script”

    我正在尝试使用JavaScriptSerializer在我的应用程序中 我最初收到 找不到 JavaScriptSerializer 我通过添加解决了这个问题 using System Web Script Serialization 但接
  • 检索“时间”字段时的时区错误?

    手册指定 https getstream io docs uniqueness这种独特性是基于foreign id and time fields 我有一个用户参加特定活动的活动 该事件有自己的开始日期 我想在时间线中显示它 因此我将其作为
  • C++ 类对非类型模板参数的部分特化

    我不确定我的术语是否正确 但我认为我有一个包含类型和非类型模板参数的类模板 并且我想部分专门研究非类型参数 template