C++11的"default"只能应用于特殊成员功能吗?

C++11's "default" can be only applied on special member functions?

本文关键字:成员 功能 应用于 default C++11      更新时间:2023-10-16

=default只适用于特殊成员函数吗?我尝试了以下内容,但它没有编译:

struct A{
   A(int, char)=default;
   int i;
   char c;
};

是的,您只能显式默认特殊成员函数。从 [dcl.fct.def.default]:

显式默认的函数应
(1.1) — 成为特殊成员函数,

毕竟,只有特殊成员函数是隐式默认的 - 那么为什么显式默认其他任何函数是有意义的呢?

在这种情况下,您可以简单地删除构造函数并A聚合。这将允许您使用列表初始化 ( A a{42, 'c'}; )。