通过基类专门化类模板

2024-03-02

我将我的疑问提炼为以下代码

struct base {};
struct derived : public base {};

template <class T>
struct Type { };

template <> struct Type<base> {
  typedef float mytype;
};

typename Type<base>::mytype a=4.2;    // this works
typename Type<derived>::mytype a=4.2; // this doesnt

谁能解释为什么我无法实例化类模板对象derived并建议一个简单的方法来做到这一点。对于我感兴趣的实际问题,有许多派生类,我想使用它们来实例化模板类对象和/或使用 typedef。它们的数量太多了,超出了我想要单独专攻的范围。

编辑:忘了提及,我的错,这需要是 C++03


#include <iostream>
#include <type_traits>

struct base { };
struct derived : base { };

template<typename T, bool = std::is_base_of<base, T>::value>
struct Type { };

template<typename T>
struct Type<T, true>
{
   typedef float mytype;
};

int main()
{
   Type<base>::mytype a1 = 4.2f;
   Type<derived>::mytype a2 = 8.4f;
   std::cout << a1 << '\n' << a2 << '\n';
}

在 C++03 中,std可以简单地替换为boost: boost::is_base_of http://www.boost.org/libs/type_traits/doc/html/boost_typetraits/reference/is_base_of.html

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

通过基类专门化类模板 的相关文章

  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 查找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
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

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

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • cmake 将标头包含到每个源文件中

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

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 如何从 Visual Studio 调试器执行所有进程内存的高级搜索?

    我是一个大型商业程序的开发人员 我正在尝试追踪特定的 C 内存泄漏 我想使用 Visual Studio 搜索进程的整个有效地址空间 但我不知道如何有效地执行此搜索 我知道 s 命令文档here http msdn microsoft co
  • 多个派生类的dynamic_cast

    我有一个基类和n派生类 我想实例化一个派生类并将其发送到一个接收基类作为参数的函数 在函数内部 我通过使用dynamic cast找到了它是哪种类型的派生类 但我不想使用几个if else语句 相反 我想知道是否有一种方法可以找出它是哪个派
  • URL 重写未安装在 Windows 10 IIS 10 上

    我的 IIS 上需要 Url Rewrite 模块 但它没有安装 并表示我至少需要 IIS7 较新版本开箱即用支持win10 https www iis net downloads microsoft url rewrite https w
  • 通过 iPython 和伪控制台运行文档测试

    我有一个相当基本的可文档文件 class Foo gt gt gt 3 2 5 if name in main console import doctest doctest testmod verbose True 当直接通过 python
  • Datagridview 更改非空单元格的单元格颜色

    我正在创建一个日历约会应用程序 我想在加载 打开应用程序时更改非空单元格 具有值的单元格 的 datagridview 的颜色 我的应用程序已经处理如何加载数据 我可以更改非空单元格的颜色 但关闭并再次打开后 颜色又恢复为默认值 我不确定语
  • X-Editable 在成功更新后将“空”

    我正在使用 X Editable 插件在表格上进行内联编辑 但遇到了一个恼人的问题 请求成功并更新成功后 插件会在表格单元格上放置 空 而不是正确的更新值 我的网站很安静 所以我正在对 URL 执行 PUT 请求 例如http exampl
  • 如何在 Eclipse Kepler 中添加 Web Tools Platform(WTP)

    我安装了Eclipse Kepler在我的系统中 到目前为止我开发了J2SE应用 现在我想发展J2EE应用程序 所以我需要添加WTP在我的日食中 我尝试添加WTP在已经存在的 eclipse 中 为此 我通过以下方式打开安装对话框并提及Na
  • 如何在 Eclipse 中注释块?

    Eclipse 有评论块的热键吗 并取消注释块 Ctrl to toggle comments and Ctrl Shift to toggle comments At least for Java anyway other tooling
  • 为什么set_xticks不设置刻度的标签?

    import matplotlib pyplot as plt x range 1 7 y 220 300 300 290 320 315 def test axes axes bar x y axes set xticks x i 100
  • 使用 DX Compositor 的 UWP 应用程序实时模糊背景

    因此 UWP 合成支持已经有一段时间了 我正在寻找一种对元素进行实时模糊的方法 在移动或加载时进行实时模糊 而不是静态快照 到目前为止 我一直在 stackoverflow 和 google 上查看一些答案 这导致我使用Lumia 成像 S
  • Android Admob 插页式内存泄漏

    我试图在某些活动结束时显示插页式广告 问题是插页式广告似乎阻止了活动被垃圾收集 从而导致内存不足异常 我该如何解决这个问题 提前致谢 public class AdActivity extends FragmentActivity prot
  • 如何更改日期格式

    我需要将日期格式更改为 dd mm YYYY HH mm ss 目前我得到的是 YYY mm dd HH mm ss 任何人都可以帮我解决这个问题吗 for var course in data if data course days va
  • WCF服务自定义配置

    在托管多个 WCF 服务的应用程序中 为每个服务添加自定义配置信息的最佳方法是什么 例如 您可能想要传递或设置公司名称或指定服务或某些其他参数的连接字符串 我猜想通过实现 IServiceBehavior 这可能是可能的 即类似
  • 创建一个 html 表格,动态扩展列数以适应屏幕尺寸

    我有很长的数据列表 例如 国家及其缩写 我想在 HTML 表中显示 我不想在 2 x 50 表中显示数据 而是希望它在更大的屏幕上更紧凑 这样用户就不必上下滚动 但仍然不必水平滚动 所以这会动态增长 State Ab Alabama AL
  • 试图理解sql查询中的“除了所有”

    我看到这个例子 但我不明白它的意思 SELECT drinker FROM Frequents EXCEPT ALL SELECT drinker FROM Likes 关系 经常 饮酒者 酒吧 喜欢 饮酒者 啤酒 在这种情况下 ALL 会
  • 纯 CSS 中旋转图像背后的纯色背景

    有没有办法可以使用纯 CSS 绘制图像后面的黑色 背景 我确信可以使用 before伪类 但我无法让它发挥作用 我也尝试过使用阴影 但最终结果与我想要达到的效果并不相似 范围及要求 现代浏览器 没有 javascript 没有 jQuery
  • CSS-目标文本链接在悬停时具有底部边框,但图像链接没有边框

    我希望能够在鼠标悬停时使用 border bottom 来定位 CSS 中的文本链接 但所有图像链接在悬停时都没有边框 所以 a href img src image png a gt this should not have a bott
  • 使用 PyYAML 库解析 AWS CloudFormation 模板

    我正在使用 PyYAML 库编写一个自定义 Python 应用程序 该应用程序需要读取 AWS CloudFormation YAML 模板 我知道这些模板是有效的 CloudFormation 模板 因为我使用 validate temp
  • Lego Mindstorm NXT 2.0:“错误:NXT 蓝牙密钥确认失败”

    运行 Windows 7 和 Lego Mindstorms NXT 2 0 IDE Windows 蓝牙管理器显示 NXT 已连接 并且 NXT 显示在 Windows 蓝牙设备列表中 然而 当我尝试从 Lego IDE 进行连接时 我收
  • 通过基类专门化类模板

    我将我的疑问提炼为以下代码 struct base struct derived public base template