VclPtr some improvements ?
Stephan Bergmann
sbergman at redhat.com
Mon Apr 16 07:45:38 UTC 2018
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]."
More information about the LibreOffice
mailing list