【发布时间】:2017-01-24 12:11:10
【问题描述】:
#include <iostream>
using namespace std;
class NoConstructOperation
{
protected:
NoConstructOperation() = default;
virtual ~NoConstructOperation() = default;
public:
NoConstructOperation(const NoConstructOperation&) = delete;
NoConstructOperation& operator =(NoConstructOperation&) = delete;
NoConstructOperation(NoConstructOperation&&) = delete;
NoConstructOperation& operator = (NoConstructOperation&&) = delete;
};
class Myclass:public NoConstructOperation
{
};
int main() {
static_assert(!std::is_trivially_destructible<Myclass>::value, "Compiler provided destructor is public: Please declare it private");
return 0;
}
如果我不使用NoConstructOperation 继承Myclass,上面的代码会使用静态断言给出编译错误。
但是如果我用NoConstructOperation 继承Myclass is_trivially_destructible 检查不起作用,即使Myclass 构造函数是公共的。这段代码可以编译,是什么原因?
【问题讨论】:
-
你想用这个实现什么?
标签: c++ c++11 visual-c++ c++14