Gibt es etwas ähnlich dem Post-Inkrement-Operator, um einen Nullzeiger auf Null zu setzen?Move Semantics: Post-Set nullptr
Gewünschtes Verhalten:
Class MyClass{
public:
int * ptr;
MyClass(MyClass && origin) noexcept;
MyClass(){}
};
MyClass::MyClass(MyClass && origin) noexcept:
ptr(origin.ptr){origin.ptr=nullptr};
Behelfslösung mit wollte semantischen:
int * moveptr(int * & ptr){
int * auxptr=ptr;
ptr=nullptr;
return auxptr;
}
MyClass::MyClass(MyClass && origin) noexcept: ptr(moveptr(origin.ptr)){};
Vielleicht etwas aus dem Standard fehlt mir, aber ich konnte nichts eine Art Zeiger darzustellen finden repräsentieren nicht Eigentum aber auch verhindert die versehentliche Sharing eines Zeigers.
Ich könnte ein unique_ptr mit einem benutzerdefinierten Deleter, der nichts tut, aber das würde die ursprüngliche Zuordnung des Zeigers seltsam machen.
ist es wirklich Stört es dich, diese zusätzliche Zeile 'rhs.p = nullptr' zu schreiben? –
Es ist nicht eine Frage der Mühe, eher zu vergessen, es zu tun. – xvan
sowieso ist es die idiomatische Sache zu tun, ich bezweifle, dass es irgendeine vorgefertigte Lösung hat –