On Monday 23 May 2016, Konstantin Tokarev wrote: > 23.05.2016, 19:25, "Giuseppe D'Angelo" <[email protected]>: > > Il 23/05/2016 18:11, Konstantin Tokarev ha scritto: > >> Hello, > > > >> I've stumbled upon QPixmap having operator=(QPixmap&&) but missing QPixmap(QPixmap&&), however it seems like there are a lot of Qt classes in the same situation, for example: > > [snip] > > > >> Is there any good reason for these classes to not have move > >> constructor, or is it just an unfortunate omission? > > > > Because the implementation of a move constructor for those classes > > requires the private class to be defined in the public header, but all > > those classes are pimpl'd, so by definition you don't have that private > > class available. > > Copy constructors are not defined in headers, so don't see any reason for > move constructors to be inline. And if those move constructors are defined > in .cpp files, it should not be needed to include private headers into > public. > The problem is/was that C++11 support was optional before Qt 5.7, and that an application could use C++11 for itself but use a Qt version compiled without C++11. This meant they had to be binary compatible, and therefore any C++11 specific methods had to be defined inline in the Qt headers.
As Thiago said, this should be something we could finally solve now in 5.7 or 5.8. Regards `Allan _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
