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

时间:2016-02-26 03:20:22

标签: c++ function c++11 default member

=default仅适用于特殊会员功能吗?我尝试了以下内容并且没有编译:

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

1 个答案:

答案 0 :(得分:6)

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

  

明确默认的功能应为   (1.1) - 是一个特殊的成员函数,

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

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