C++ CRTP的初始值设定项列表构造函数错误
我正在用C++11弄湿我的脚,我真的很困惑为什么这不起作用: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
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)
啊,所以第二部分不适用。谢谢。这是目前正在考虑的一项提案。