这不包括由cornercase 这个(虽然有趣的信息在其中设置).我的代码如下所示:
struct concept {
virtual ~concept() = default;
};
struct policy {
protected :
~policy() = default;
};
struct implementation final : concept, policy {
};
Run Code Online (Sandbox Code Playgroud)
如果我只通过指针使用此层次结构concept:
unique_ptr<concept> = make_unique<implementation>();
Run Code Online (Sandbox Code Playgroud)
以上安全吗?
我相信这是因为,如果有人试图通过指针删除policy的protected析构函数不会允许它(从招Modern C++ design),但没有休息,做工精细?(即当删除指向概念的指针时,保证被正确调用的层次结构的析构函数?)
由于~concept()是虚拟的,当你delete通过concept指针对象时,它会调用~implementation().
我没有看到任何理由为什么其余的不会像他们应该的那样工作.