Okay, also ich habe mal ein wenig nachgeforscht und nach dem, was ich so gefunden habe, ist der Stand von November 2010, dass sich auf
N3203 geeinigt wurde.
Das sagt u.a.: Hat eine Klasse einen user-defined D’tor oder Zuweisungsoperator, wird ein automatischer Kopierk’tor zwar noch erzeugt, ist aber deprecated (d.h., wird in einem der nächsten Standards rausfliegen). Umgekehrt gilt das auch für den automatischen Kopierzuweisungsoperator, falls ein user-defined Kopierk’tor deklariert wurde.
Verschiebek’toren werden zwar noch implizit erzeugt, allerdings nur, wenn
- die Klasse keinen user-defined Kopierk’tor hat;
- die Klasse keinen user-defined Kopierzuweisungsoperator hat;
- die Klasse keinen user-defined Verschiebezuweisungsoperator hat;
- die Klasse keinen user-defined D’tor hat; und
- er nicht als = delete erzeugt würde, was auch immer das heißen mag (ich schätze für den Fall, dass ein Attribut oder eine Superklasse keinen anbietet und er deshalb nicht erzeugt werden kann).
Damit fliegt fast alles raus, was nicht POD ist. Dasselbe gilt für den Move Assignment Operator. Damit wird bestmöglich vermieden, dass der automatische K’tor / Operator Invarianten verletzt indem er was anderes tut als das, was der Programmierer bspw. per Kopierk’tor und D’tor für gewöhnliche Kopien vorgibt.
Falls das tatsächlich der endgültige Stand ist bedeutet das, dass C++0x nicht nur nicht den Fehler mit den automatischen Kopierk’toren wiederholt, sondern ihn sogar noch nachträglich korrigiert indem diese deprecated markiert werden. In diesem Fall wäre ich erleichtert.
Falls hingegen jemand was noch Aktuelleres findert, bitte her damit.