【问题标题】:C++11's "default" can be only applied on special member functions?C++11的“默认”只能应用于特殊的成员函数?
【发布时间】:2016-06-09 03:25:59
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    明确默认的函数应该
    (1.1) — 是一个特殊的成员函数,

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2013-09-14
      • 1970-01-01
      相关资源
      最近更新 更多