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