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

initializer list constructor error with 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 派生时,它工作得很好,那么派生是否会以某种方式改变我的结构 B 的 POD 性?

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

An aggregate is an array or a class (Clause 9) with no user-provided constructors (12.1), no private or protected non-static data members (Clause 11), no base classes (Clause 10), and no virtual functions (10.3).