Hello again, If you mind the smart pointer templates, then what about
auto* const newData = new PageTransitionData(*other.data); auto* const oldData = data; data = newData; delete oldData; As this is a library which does not know what kind of programs will make use of it, exception safety is quite important IMHO. Best regards, Adam. Am 10.01.2018 um 19:57 schrieb Albert Astals Cid: > El dimecres, 10 de gener de 2018, a les 8:57:05 CET, Adam Reichold va > escriure: >> Hello, >> >> Am 09.01.2018 um 23:41 schrieb Albert Astals Cid: >>> +PageTransition& PageTransition::operator=(const PageTransition &other) >>> +{ >>> + if ( this != &other ) { >>> + delete data; >>> + data = new PageTransitionData(*other.data); >>> + } >>> + >>> + return *this; >>> +} >>> + >> >> In view of exception safety, I think it would be better to first create >> the new data and then destroy the old one, i.e.: >> >> std::unique_ptr<PageTransitionData> newData{new >> PageTransitionData(*other.data)}; >> data.swap(newData); > > I'd really much prefer code i can read over safety exception :D > > Cheers, > Albert > >> >> (assuming PageTransition::data becomes a unique_ptr) >> >> Regards, Adam. >> _______________________________________________ >> poppler mailing list >> poppler@lists.freedesktop.org >> https://lists.freedesktop.org/mailman/listinfo/poppler > > > _______________________________________________ > poppler mailing list > poppler@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/poppler > _______________________________________________ poppler mailing list poppler@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/poppler