 <p>That would allow some kind of proxy-copy like this:</p> <pre><code>NotCopyable a, b; b = a; // Made a copy of a </code></pre> <p>It is pretty unlikely that you do not want copy construction but copy assignment. Move assignment would be a different deal of course, see e.g. <code>std::unique_ptr</code>.</p> <p>Singleton is basically the same. Why allow the self assignment? That just does not make sense.</p>