为什么 std 库不使用这些来代替?目前,如果对不可复制对象的复制构造函数进行调用,则错误消息可能有点“神秘”或让从未遇到过的人感到困惑。
第一次收到此错误消息时,我不知道问题出在哪里(我从没想过无法访问的 ctors 的想法),直到我查看课程并看到“不可复制”并最终理解。
将 copy-ctor 设为私有有什么好处?对于 ctor 重载,它在 VS intellisense 中仍然可见。
为什么他们不简单地选择:
public:
someClass(const someClass&) { static_assert(false, "someClass is of non-copyable type. calls to copy constructor are disallowed."); }
如果有人尝试编译他们的代码,他们将看到此错误消息,其中更明确地说明了错误的原因。相比 (const someClass&) 是无法访问的。想象一下,当涉及大量使用模板时,理解这一点会有多困难?
那么,私有复制ctor 与 static_assert 有什么好处?