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

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

=default是否只适用于特殊成员函数?我尝试了以下但没有编译:

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

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

A function that is explicitly defaulted shall
(1.1) — be a special member function,

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

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