模板之外的类型名

2024-01-24

这在 VS2010sp1 中无法编译(不过它可以使用 gcc 4.6 进行编译):

template<class T>
struct Upcast;

template<>
struct Upcast<signed char>
{
    typedef signed short type;
};

template<>
struct Upcast<char>
{
    typedef typename std::conditional<std::is_signed<char>::value,short, unsigned short>::type type;
};

int main()
{
    Upcast<char>::type a;
    return 0;
}

VS 的错误:

Error   1   error C2899: typename cannot be used outside a template declaration

哪个团队是正确的? VS 还是 gcc?


VS 在 C++03 上是正确的。 GCC 在 C++0x 上是正确的。

现在,GCC 在 C++03 模式下也允许这样做可能是明智的(有很多真正的编译器在 C++03 模式下无法诊断的事情实际上只在 C++0x 中有效),并且它可能是- VS 在 C++03 模式下拒绝它是明智的。

是否使用已经不重要了typename QualifiedName在 C++0x 中是否发生在模板中。也就是说,以下内容对于 C++0x 是完全合法的:

#include<vector>

int main() {
  typename std::vector<int> v;
}

在 C++03 中,typename只能在模板内部使用。并且代码中的显式专业化不是模板。没有template<typename T ...>子句(代码中的所有参数都是固定的)。

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

模板之外的类型名 的相关文章

随机推荐

  • 将二进制字符串转换为浮点数

    我有一个正在存储位的对象 class Bitset def init self bitstring self bitlist for char in bitstring self bitlist append int char def fl
  • 如何从 Forms 身份验证迁移到 ASP .NET Identity

    我正在从事一个包含常规 MVC 控制器和 Web API 控制器的 MVC 项目 最初 我使用自定义用户表实现了表单身份验证 但现在我计划使用新的 ASP NET Identity 并将基于表单 cookie 的身份验证更改为基于声明的身份
  • 如何将实际的 NULL 值插入到可为空的列中?

    function save gmt name address phone remark query INSERT INTO user gmt name address phone remark VALUES gmt name address
  • 如何读取 IRAF 多光谱光谱?

    我在用 Iraf 生成的拟合文件中有一个光谱 波长轴在标头中编码为 WAT0 001 system multispec WAT1 001 wtype multispec label Wavelength units angstroms WA
  • 为什么 HSV 上的颜色分割更容易?

    我听说 如果您需要在软件上进行颜色分割 如果满足某些阈值规则 如 R100 10 主要原因是它将颜色信息 色度 与强度或照明 亮度 分开 由于值是分开的 因此您可以仅使用饱和度和色调构建直方图或阈值规则 理论上 无论值通道中的光照如何变化
  • html中溢出时如何向文本添加三个点? [复制]

    这个问题在这里已经有答案了 How can I show three dots in a text like this 添加所有这些 制作单线 text overflow ellipsis white space nowrap overfl
  • JBoss EAP 7 启动期间“读取属性”操作失败

    我已在 SSL 模式下将应用程序部署在 JBoss EAP 7 上 我的应用程序已部署并成功运行 但在启动过程中 每次服务器启动并且同时部署 WAR 时 我都会在控制台上收到以下错误 不会引发异常 11 28 11 402 ERROR or
  • 无法在鼠标输入时使用 jquery 将焦点设置为下拉列表

    这是我的 html 代码 div hello div div div
  • proguard - AppCompat 不支持 proguard/minify 后的当前主题功能

    我已将支持库从 v22 2 1 更新到 v23 0 0 在构建应用程序 使用 minifyEnabled true 后 出现 AppCompat 不支持当前主题功能 异常 08 23 05 46 10 168 19437 19437 E A
  • C++中纯虚函数有什么用?

    我现在正在课堂上学习 C 我不太理解纯虚函数 我知道它们稍后会在派生类中概述 但如果您只是要在派生类中定义它 为什么要将其声明为等于 0 简单来说 就是让类变得抽象 这样它就不能被实例化 但子类可以重写纯虚方法 形成一个具体的类 这是在 C
  • 根据查询将所有行提取到数组中

    我有以下代码 2 Query database for data result mysql query SELECT FROM tableName query array mysql fetch row result fetch resul
  • 如何使用 EasyPHP 5.3.8 安装 PEAR?

    我正在学习 Yii 并关注杰弗里 温塞特撰写的电子书 https rads stackoverflow com amzn click com 1847199585 该应用程序是基于 TDD 构建的 因此 我需要安装 PHPUnit 来编写单
  • 如何在 Android 13 上打开免提通话

    显然有很多帖子展示了如何在早期 Android 版本上打开扬声器 这些在新操作系统中不起作用 有人可以发布 Xamarin Forms 解决方案吗 AudioManager 在早期版本中使用 但当前操作系统需要额外的权限或不同的 API 提
  • Scala 解析器组合器解析 xml?

    scala 的解析器组合器可以解析 xml 并验证结束标签与开始标签的名称相同吗 我并不直接需要它 但我想知道我的库的限制 是的 它可以做到这一点 使用into or gt gt 实际上是同一件事 根据解析值参数化后一个解析器
  • Symfony 在生产中禁用控制器操作[重复]

    这个问题在这里已经有答案了 当 prod 环境处于活动状态时 是否可以 禁用 特定操作 我有一些不应在生产环境中执行的测试操作 class TestController extends FOSRestController Rest Get
  • Django REMOTE_USER 不存在,但 HTTP_REMOTE_USER 存在

    All 我有一个应该是一个非常简单的问题 我正在尝试按照以下说明使用 REMOTE USER 变量来使用 Django 身份验证 https docs djangoproject com en 1 8 howto auth remote u
  • 部署到 Heroku 错误:找不到模块“/app/server.js”

    我正在将使用 angular cli 创建的 Angular 6 应用程序部署到 Heroku 构建成功完成 但是 当我转到已部署的应用程序时 我看到一个空白页面 运行 Heroku 日志后 启动节点服务器实例时似乎发生错误 崩溃 找不到模
  • 在 Sharepoint 站点中发布 Excel 工作簿

    我有一个 Excel 工作簿 我需要使用 Excel VBA 在 SharePoint 网站中发布它 所以我使用以下代码在模块中创建了一个方法 Private sc Lists As SoapClient30 Public c WSDL U
  • AccessDenied:无权执行 sts:AssumeRoleWithWebIdentity

    我查看过类似的问题 但无法解决我的问题 我正在开发一个 Web 应用程序 用户将使用 AWS Cognito 的身份验证进行身份验证 注册部分正常 但是当我尝试登录时 我收到 未授权 异常 我已经尝试将自定义策略附加到我的 IAM 角色 授
  • 模板之外的类型名

    这在 VS2010sp1 中无法编译 不过它可以使用 gcc 4 6 进行编译 template