模板类中模板化成员函数的特化

2023-12-24

我有一个带有模板化成员函数的模板化类

template<class T>
class A {
public:
    template<class CT>
    CT function();
};

现在我想以两种方式专门化模板化成员函数。首先与类具有相同的类型:

template<class T>
template<>  // Line gcc gives an error for, see below
T A<T>::function<T>() {
    return (T)0.0;
}

第二个用于 bool 类型:

template<class T>
template<>
bool A<T>::function<bool>() {
    return false;
}

这是我尝试测试它的方法:

int main() {
    A<double> a;
    bool b = a.function<bool>();
    double d = a.function<double>();
}

现在 gcc 给出了上面标记的行:

error: invalid explicit specialization before ‘>’ token
error: enclosing class templates are not explicitly specialize

所以 gcc 告诉我,如果我想专门化函数,我必须专门化 A,对吧? 我不想这样做,我希望外部类的类型是开放的......

最终的答案是:不可能吗?或者有什么办法吗?


是的,这就是问题所在:

error: enclosing class templates are not explicitly specialized 

如果不专门化班级,则无法专门化成员。

你什么can做的就是把代码从function在一个单独的类中并对其进行专门化,就像 basic_string 依赖于单独的 char_traits 类一样。然后是非专业function可以调用traits类中的助手。

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

模板类中模板化成员函数的特化 的相关文章

  • #include 在 ubuntu 中“没有这样的文件”

    当使用 g std c 0x Wall test cc o hello 编译时 输出致命错误 cstdatomic 没有这样的文件或直接 哪里不见了 包含内容应该是 include
  • 无法对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作

    我有一个适用于所有实体的扩展 public static class EntityBaseExtensions public static T Clone
  • C 中的分段错误

    我需要用 0 填充二维数组 但编译后的程序会出现此错误 怎么了 int main int vert 1001 1001 int hor 1001 1001 int dudiag 1416 1416 int uddiag 1416 1416
  • ZedGraph 缩放和调整大小

    当我绘制图形 放大和缩小并重新绘制图形时 图形的位置不会改变 我想要做的是 每当重新绘制数据时 视图都会更改以查看所有图形数据 如果您在重绘之前放大或缩小 这似乎会被禁用 Thanks 设置属性 IsZoomOnMouseCenter对于控
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • 将内核链接到 PTX 函数

    我可以使用 PTX 文件中包含的 PTX 函数作为外部设备函数 将其链接到另一个应调用该函数的 cu 文件吗 这是另一个问题CUDA 将内核链接在一起 https stackoverflow com questions 20636800 c
  • 优化对绑定到 DataGridView 的 DataTable 的更新

    我的应用程序中有一个显示一些数据的表单 当我第一次显示表单时 我将一些数据加载到 DataTable 中 然后将 DataTable 绑定到 DataGridView 我还启动了一个异步方法来执行一些较慢的数据库查询 当这些慢查询完成时 我
  • 整数与双精度算术性能?

    我正在编写一个 C 类来使用整数执行 2D 可分离卷积 以获得比双对应更好的性能 问题是我没有获得真正的性能提升 这是 X 过滤器代码 对于 int 和 double 情况都有效 foreach pixel int value 0 for
  • 了解 MVC-5 身份

    我创建了一个新的ASP NET MVC 5申请与Individual User Accounts然后更新了所有的Nuget packages在解决方案中 现在我尝试遵循一些教程中显示的一些指南 但遇到了一些问题 第一个是一个名为Applic
  • 最小对的总和

    Given 2N点 in a 2D plane 你必须将它们分组为N pairs使得所有对的点之间的距离的总和是最小可能值 所需的输出只是总和 换句话说 如果a1 a2 an分别是第一对 第二对 和第 n 对点之间的距离 则 a1 a2 a
  • 带有 Unicode 字符的主机名在 Windows 8 中有效

    Uri CheckHostName 回报UriHostNameType Unknown到处都是 但在 Windows 8 上 它又回来了UriHostNameType Dns 为什么突然间带有 Unicode 西里尔字符的主机名在 Wind
  • 一些涉及类析构函数和删除运算符的内存管理问题?

    在阅读了一些教程后 我仍然不清楚 C 中内存管理的一些观点 1 当使用 new 运算符声明的类超出范围时 是否会调用其析构函数并释放内存 是否有必要调用删除运算符来释放类的内存并调用其析构函数 class Test void newTest
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • 如何从句柄确定进程是 32 位还是 64 位?

    如何从使用 OpenProcess 获取的进程句柄中获取信息 无论进程是 32 位还是 64 位 是的 IsWow64Process 毫无用处 令人烦恼 它的真正意思是 启用了 32 位模拟 如果您在 32 位操作系统上运行 则返回 fal
  • 序列化时如何跳过 xml 声明?

    我正在尝试输出一个没有 xml 头的 xml 文件 例如 我试过 Type t obj GetType XmlSerializer xs new XmlSerializer t XmlWriter xw XmlWriter Create c
  • C# 记录类型:记录子类之间的相等比较

    给定父记录类型 public record Foo string Value 和两个记录子类Bar and Bee我想知道是否可以实施Equals在基类中 因此 Foo Bar 或 Bee 的实例都被考虑equal基于Value 两者都与E
  • Azure Function App Azure 服务总线触发器触发两次

    我使用带有服务总线触发器的 Azure Function Apps 来读取服务总线并对服务总线消息的内容执行操作 服务总线接收 JSON 序列化对象 然后将 JSON 消息反序列化回 Function App 中的对象 然而 由于某种原因
  • 即使对于新上下文,OnModelCreating 也仅调用一次

    我有多个相同但内容不同的 SQL Server 表 在编写代码优先 EF6 程序时 我尝试为每个程序重用相同的数据库上下文 并将表名称传递给上下文构造函数 然而 虽然每次都会调用构造函数 但尽管每次都是从 new 创建数据库上下文 但 On
  • 通过 OCI 调用 Oracle 存储过程并使用 C++ 中的 out ref 游标返回结果

    我想使用 OCI 接口从 C 调用 Oracle 存储过程 并使用 out SYS REF CURSOR 作为过程的参数来迭代结果 我是 OCI 新手 所以可能会遗漏一些简单的东西 大部分代码取自这里 我的存储过程是 CREATE OR R
  • 如何通过Task.ContinueWith创建传递?

    我想在原始任务结束时添加一个任务 但想保留原始结果和类型 附加任务仅用于记录目的 例如写入控制台等 例如 Task Run gt DateTime Now Hour gt 12 Hey throw new Exception Continu

随机推荐

  • css 单行或多行垂直对齐

    我的标题可以有一行或多行 如何垂直对齐文本 如果它总是一行 我可以将行高设置为容器高度 我可以使用 JavaScript 来做到这一点 但我不太喜欢它 我正在寻找一种纯 CSS 的方式 另外 如果容器可以随着线条扩展那就完美了 这样我就可以
  • 使用 Javascript 签名密钥 HMAC SHA1

    由于某种原因 我无法从 JS 中的私钥创建签名 使用谷歌的在线帮助 https m4b url signer appspot com https m4b url signer appspot com URL 示例密钥 为了练习的目的是假的
  • 默认的 Move 构造函数是否定义为 noexcept?

    看起来向量会在重新分配时决定是否移动或复制元素之前检查移动构造函数是否标记为 noexcept 默认的移动构造函数是否定义为 noexcept 我看到了以下文档 但没有具体说明这一点 http en cppreference com w c
  • 将数组数组导出为 CSV

    我正在尝试循环遍历多维数组以将其导出到 CSV 我尝试复制一些在线指南 大多数似乎都显示了类似的解决方案如何将 JavaScript 数组信息导出到 csv 在客户端 https stackoverflow com questions 14
  • Android Studio Fragment 类型不兼容错误

    import android support v4 app Fragment import android support v4 app FragmentManager import android support v4 app Fragm
  • ENOMEM创建线程失败的原因?

    我有一个正在使用的应用程序pthread create and pthread detach 在主线程和稍后pthread exit 在子线程中 54 左右后pthread create 每个调用都与后续的调用配对pthread detac
  • 使用 EKEventStore 从 iPhone 日历中删除事件

    我正在尝试从 iPhone 日历中删除我创建的事件 我尝试了这个 但它总是返回 否 eventStore removeEvent event span EKSpanThisEvent error err 我按如下方式创建了该事件并且它有效
  • 如何调试 AsyncTask 的 doInBackground 代码

    我设置了断点 但它们似乎被忽略 或从未见过 我的代码如下 我正在尝试将 sql 数据库备份到 SD 卡 当我在 Eclipse 中运行它 不是调试模式 时 我从 onPreExecute 收到消息 然后很快就收到来自 onPostExecu
  • 在 Django 管理中,我可以要求模型中的字段,但当它是内联时则不行吗?

    在 django admin 中 如果要独立编辑模型 我需要一些字段 如果它是内联的 我不希望它们是必需的 有没有办法做到这一点 虽然丹尼尔 罗斯曼的答案有效 但这并不是最好的解决方案 由于必须重新声明表单字段 因此需要一些代码重复 例如
  • 如何处理数据库中的多态性?

    Example I have Person SpecialPerson and User Person and SpecialPerson只是人 他们在网站上没有用户名或密码 但他们存储在数据库中以保存记录 用户拥有与以下所有相同的数据Pe
  • 将 popen 输出重定向到 python 中的文件

    我看过很多答案stdout file将重定向到一个文件 但我有几个疑问 为什么不 gt file work subprocess Popen SCRIPT R gt FILE 2 gt dev null 这样可以吗 with open FI
  • 自动跟踪变量的更改

    我正在调试一个 C 程序 Linux 中的 GCC 和 GDB Windows 中的 Visual Studio 它在两种不同的体系结构上给出不同的结果 我想通过跟踪变量中存储的值的更改来比较每个体系结构的执行情况 以便找到差异 file
  • SystemClock.uptimeMillis() 怎么可能换行?

    The 关于 uptimeMillis 的 Android 文档 http developer android com reference android os SystemClock html uptimeMillis 28 29 say
  • 有与 PadLeft/PadRight 等效的方法吗?

    只是想知道 VBA 中是否有与 VB NET 的 PadLeft 和 PadRight 方法等效的方法 截至目前 每当我想要获取一个字符串并使其具有前导空格的固定长度时 我都会根据字符串的长度执行 For Next 循环 例如 我将使用以下
  • 将向量的唯一值映射到连续整数的有效方法是什么?

    我在 R 中有一个数据框 其中包含非连续数字的向量 data SiteID 我想映射到一个连续数字的向量 data site 的独特价值data SiteID 在每个站点内 我想绘制地图data TrtID to 0 where data
  • 可以在 ASP.net MVC3 中使用嵌套视图模型吗?

    这是我正在做的事情的简化版本 我创建了一个包含公司数据的视图模型 公司有3个地址 因此 为了变得聪明 我创建了一个 AddressViewModel 和一个 address 部分 我遇到的问题是 虽然我可以将 AddressViewMode
  • 插件如何在 play 2.4 中使用注入和对象而不是类

    我需要迁移 play 2 4 的 play mailer 插件 我检查了 play 2 4 的一些示例 发现所有示例都使用插件类 我不想将其转换为类 有什么办法让它与对象一起工作吗 Sample class MyComponent Inje
  • 尝试将不正确的值读入变量会改变其值吗?

    If the iostat如果存在关键字 则如果发生 I O 错误 程序不会停止 然后 如果我尝试将不正确的值读入标量变量 i比如说 这个变量会保持不变吗 以下似乎有效 program test integer i stat i 1 do
  • 从文件而不是 URL 加载时 UIWebView 内存泄漏?

    我有一个包含 UIWebView 操作系统 3 0 的 UIViewController 如果我用文件数据加载它 一旦点击 后退按钮 并且视图被关闭 我就会看到EXEC BAD ACCESSWebCore 对象释放 SharedBuffer
  • 模板类中模板化成员函数的特化

    我有一个带有模板化成员函数的模板化类 template