具有推导类模板特化类型的变量声明符中的冗余括号

问题描述

以下program

template <typename = int>
struct S {};

S (s);

由 GCC 编译,只有关于声明符周围多余括号的警告。但是,Clang 给出了声明的硬错误

错误:声明具有推导类模板特化类型的变量时不能使用括号

这是一个相当具体的错误(例如 S<int> (s); 编译),所以我猜这是故意的,但我找不到说这是格式错误的措辞。像 dcl.dcltemp.class.general 这样的明显候选人不会对此发表任何意见,除非我错过了。

这是 GCC 错误,还是 IFNDR,Clang 有帮助?

解决方法

这似乎是 Clang 过于急切地应用 CWG2376,禁止所有 声明符运算符,而不仅仅是那些更改声明类型的运算符。诊断最棘手的解析问题的启发式方法也可能在起作用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...