C++ 11的“默认”只能应用于特殊的成员函数吗?
问题描述:
=default
只适用于特殊会员功能吗?我试了下面,但没有编译:C++ 11的“默认”只能应用于特殊的成员函数吗?
struct A{
A(int, char)=default;
int i;
char c;
};
答
是的,你只能明确地默认特殊的成员函数。从[dcl.fct.def.default]:
被明确地默认应
(1.1)的函数 - 是一个特殊的成员函数,
毕竟,只有特殊成员函数暗含默认 - 所以为什么它会明确明确默认别的?
在这种情况下,您可以简单地删除构造函数并使A
成为一个聚合。这将允许您使用列表初始化(A a{42, 'c'};
)。