【发布时间】:2019-07-29 14:36:16
【问题描述】:
我有这个 CRTP:
template <class T>
struct S {
void clear() { new (this) T; }
};
class SS : public S<SS> {
int i = 5;
};
int main() {
SS s;
s.clear();
}
clear() 是否保证按预期工作? S 是不是虚拟的还有关系吗?
就此而言,我们可以假设所有继承 S 的类除了原始类型或 POD 类型之外什么都没有,因此没有花哨的构造函数和析构函数。
我用 gcc 和 valgrind 编译似乎没有抱怨,但感觉很奇怪。
【问题讨论】: