On 20/05/17 11:40, Michael Meeks wrote:
Julien had some good ideas for simplifying VclPtr usage; here is the
background - currently we have:
VclPtr<Foo> pFoo;
+ empty VclPtr pointer eg. shared_ptr<Foo> xFoo;
VclPtrInstance<Foo> pFoo( pParent );
+ creates a pFoo as above, and initializes it to an
instance; we can't expose 'new Foo()' publicly due
to the odd reference counting behavior. ::Create
is a little like make_shared
+ sementically this is:
VclPtr<Foo> pFoo = VclPtr<Foo>::Create( pParent );
* Suggestion - lets kill VclPtrInstance in a world with
'auto' its main use of saving a bit of typing is gone
ie.
auto pFoo = VclPtr<Foo>::Create( pParent );
One more argument supporting that,
<https://cgit.freedesktop.org/libreoffice/core/commit/?id=74b6e61dde64c5e24bffacda6f67dbf3d1fc7032>
"-Werror,-Wreturn-std-move (recent Clang trunk)":
"An explicit std::move would be needed in the return statements, as
there's a conversion from VclPtrInstance to base class VclPtr involved.
One more reason to better get rid of VclPtrInstance completely in favor
of VclPtr::Create, as already mentioned in [this mail thread]."
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice