如何解决具有推导类模板特化类型的变量声明符中的冗余括号
以下program
template <typename = int>
struct S {};
S (s);
由 GCC 编译,只有关于声明符周围多余括号的警告。但是,Clang 给出了声明的硬错误
错误:声明具有推导类模板特化类型的变量时不能使用括号
这是一个相当具体的错误(例如 S<int> (s);
编译),所以我猜这是故意的,但我找不到说这是格式错误的措辞。像 dcl.dcl 和 temp.class.general 这样的明显候选人不会对此发表任何意见,除非我错过了。
这是 GCC 错误,还是 IFNDR,Clang 有帮助?
解决方法
这似乎是 Clang 过于急切地应用 CWG2376,禁止所有 声明符运算符,而不仅仅是那些更改声明类型的运算符。诊断最棘手的解析问题的启发式方法也可能在起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。