初始化列表构造函数错误带有CRTP



我正在用C 11润湿我的脚,这真的很困惑为什么这不起作用:

template <class T>
struct A {
  size_t size() const { return sizeof(T); }
};
struct B : A<B> {
  int x;
  int y;
};
B var {1, 5};

我正在使用GCC 4.8.2,并获得错误说:

no matching function for call to 'B(<brace-enclosed initializer list>)'

当我不源自A时,它的工作正常,那么推导会以某种方式改变我的struct B

汇总initialization 要求您的类型为汇总。聚合不能拥有基类:

汇总是不提供用户的数组或类(第9条)(第9条) 构造函数(12.1),没有私人或受保护的非静态数据成员 (第11条),无基本类(第10条),没有虚拟功能 (10.3)。

最新更新