Quote Originally Posted by laserlight View Post
Not quite end of story: there is an exception where the destructor is user defined solely to declare it virtual for a polymorphic base class. In such a case, the compiler generated copy constructor and assignment operator may well still be correct.
There is also a singleton class that may have a non-trivial destructor, but will not want working copy constructor or assignment operator. In such cases, a common technique is to declare copy constructor and assignment operator private, but not to define/implement them.

It is a philosophical argument whether a copy constructor declared private but not actually defined can be said to exist