我正在用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)。