On среда, 19 апреля 2017 г. 20:58:28 EEST Ville Voutilainen wrote: > On 19 April 2017 at 20:48, Konstantin Tokarev <[email protected]> wrote: > > 19.04.2017, 20:43, "Thiago Macieira" <[email protected]>: > >> On quarta-feira, 19 de abril de 2017 06:44:24 PDT Konstantin Tokarev wrote: > >>> Hello, > >>> > >>> I think it will be a good idea to provide implementation of functor > >>> calling > >>> deleteLater() instead of delete which can be used with std::unique_ptr, > >>> std::shared_ptr and other smart pointers with compatible interface. > >>> > >>> We already have QScopedPointerObjectDeleteLater, however it implements > >>> cleanup(T*) instead of operator()(T*). > >>> > >>> Any suggestions how to name this new class and where to place it? > >> > >> QSharedPointer already supports a PMF as a deleter. > >> > >> auto ptr = QSharedPointer<QObject *>(new QObject, > >> &QObject::deleteLater); > >> > >> So I think this actually belongs in the std-proposals mailing list, not > >> in Qt. > >> > >> Until C++20 gets it, you can use a lambda. > > > > It's not possible to have members with auto-deduced types in non-template > > class, so I actually cannot. > > I fail to see what auto-deduced members have to do with it: > > std::unique_ptr<QObject, void(*)(QObject*)> upqobj{nullptr, > [](QObject* obj) { obj->deleteLater(); }};
BTW, is there any advantage of using lambda over the following construction? std::unique_ptr<QObject, decltype(std::mem_fn(&QObject::deleteLater))> (ptr, std::mem_fn(&QObject::deleteLater)); _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
