Wenn die Benutzung Compiler-generierter Elementfunktionen (für Kopie und Wertzuweisung) nicht erwünscht ist, sollte sie explizit verboten werden:
class array { ... private: array& operator = (const array& rhs) {};
Das reicht noch nicht ganz: Freunde und Member dürfen Operator = immer noch benutzen (mit ungewolltem Ergebnis).
Trick: Nur deklarieren, nicht definieren (wirklich nicht):
class array { ... private: array& operator = (const array& rhs);
Benutzungen dieses Operators werden dann vom Linker beanstandet.