我需要一个noncopyable
具有声明析构函数的类,而天真的方法不起作用:请参阅https://ideone.com/mU8aoc。析构函数有什么问题,为什么移动与没有它的方式不同?当然,如何解决它?
作为参考,完整的代码(与ideone
上面的链接相同):
class noncopyable {
public:
noncopyable(noncopyable &&) noexcept;
noncopyable &operator=(noncopyable &&) noexcept;
protected:
noncopyable() = default;
~noncopyable() = default;
noncopyable(const noncopyable &) = delete;
noncopyable &operator=(const noncopyable &) = delete;
};
class C: noncopyable {
public:
// compiles if this line is uncommented
// C(C&& c);
C() {}
// also compiles if this is commented
~C() {}
};
C a() {
return {};
}
C b() {
return a();
}
int main() {
return 0;
}