在 C++20 标准中,[dcl.fct.def.default],显式默认函数:
2显式默认的特殊成员函数的类型允许与隐式声明时的类型不同,如下所示:
T1
F
T2
(2.1) —并且可能有不同的 ref-qualifiers;
T1
T2
(2.2) —并且可能有不同的异常规范;和
T1
T2
(2.3) — 如果有一个类型的参数,则对应的参数可能是类型。
T2
const C&
T1
C&
如果与任何其他方式不同,则:
T1
T2
(2.4) — if
F
是一个赋值运算符,并且返回类型 不同于or的返回类型的参数类型不是引用,程序是非良构的;T1
T2
T1
(2.5) —否则,如果
F
在其第一个声明中明确默认,则将其定义为已删除;(2.6) — 否则,程序格式错误
任何人都可以提供一个明确默认并被编译器删除的特殊成员函数的示例。函数声明应该格式正确。