C++ CRTP的初始值设定项列表构造函数错误

C++ CRTP的初始值设定项列表构造函数错误,c++,c++11,initializer-list,crtp,C++,C++11,Initializer List,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}; 模板 结构A{ size_t size()常量{return sizeof(t);} }; 结构B:A{ int x; int-y; }; B va

我正在用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};
模板
结构A{
size_t size()常量{return sizeof(t);}
};
结构B:A{
int x;
int-y;
};
B var{1,5};
我使用的是gcc 4.8.2,出现了一个错误:

no matching function for call to 'B(<brace-enclosed initializer list>)'
调用“B()”时没有匹配的函数
当我不是从
A
派生时,它工作得很好,派生是否会以某种方式改变我的结构
B

聚合初始化要求您的类型是聚合。聚合不能有基类:

聚合是没有提供用户的数组或类(第9条) 构造函数(12.1),没有私有或受保护的非静态数据成员 (第11条),没有基类(第10条),也没有虚函数 (10.3)

啊,所以第二部分不适用。谢谢。这是目前正在考虑的一项提案。