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'};
)。
=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'};
)。