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

问题描述

以下program

template <typename = int>
struct S {};

S (s);

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

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

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

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

解决方法

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...