On Tuesday May 8 2012, Thiago Macieira wrote: > On terça-feira, 8 de maio de 2012 15.22.55, Marc Mutz wrote: > > I'm also giving each class a move constructor. There, the classes which > > hold their pimpl in smart pointers create the problem[1] that the move > > ctor cannot be inline. I'm tempted to remove the use of these in favour > > of going back to naked pointers, which allow the move ctor to be inline. > > Does anyone feel very strongly about that? > > Between a move constructor and QSharedDataPointer, I'd rather stay with the > latter. It avoids the manual reference counting, which may include subtle > errors.
The manual reference counting reduces to calling ref() in the copy ctor and deref() || delete in the dtor, thanks to the copy-swap idiom. > An alternative is to use C++11 extern template declarations alongside an > export macro. It's a solution I had tried and worked in > QDBusUnixFileDescriptor, using GCC's equivalent C++98 extension. This doesn't sound like the code ends up inline, though. Do you have a change set so I can look at it? BC is only one reason to have the move ctor inline. The other is speed. Moving should be blazingly fast, and jumping into a so/dll to perform it sounds like premature pessimisation :) Thanks, Marc -- Marc Mutz <[email protected]> | Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090 KDAB - Qt Experts - Platform-Independent Software Solutions _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
