C 20 中的类模板构造函数中的冗余模板参数列表
在 C 中,在类模板中声明构造函数的语法发生了变化在 C 20 中。以前,以下形式的代码被认为是格式良好的:
template<typename T> struct S { S<T>(); };
尽管
error: expected unqualified-id before ')' token 3 | S<T>(); ^
虽然在 GCC10.2 或带有 -std= 的 Clang 中不会遇到此错误c 20,它源于 C 20 中引入的根本性更改。
根据 C 20 兼容性部分,不再使用 simple-template-id 作为构造函数或析构函数的 declarator-id有效的。此举旨在消除潜在的容易出错的冗余。
C 20 的 [class.ctor] 部分中的新措辞指定对于类模板内的成员声明中的构造函数,应使用注入的类名称:
template<typename T> struct S { S(); // Use injected-class-name };
在此示例中,S 表示内部类模板的注入类名称。因此,冗余的
以上是为什么 C 20 类模板构造函数中的冗余模板参数列表现在出现错误?的详细内容。更多信息请关注PHP中文网其他相关文章!