Many thanks Vitaly for taking the time and effort to get the discussion going.

-----Original Message-----
>From: Development<development-boun...@qt-project.org> On Behalf Of Vitaly 
>Fanaskov
>Sent: Dienstag, 11. Februar 2020 16:15 Uhr
>To: development @qt-project.org
> Subject: Re: [Development] The future of smart pointers in Qt API
>
>I want to summarize intermediate results of the discussion and return it back 
>to the track.
>
>
>Subject: using smart pointers in the API.
>Good idea.Better to use than not because of automatic lifetime
>management, explicit ownership semantics, and code base maintainability
>is simpler.However, it doesn’t mean that this is a mandatory choice for 
>all API, just a recommended way so far.

If the outcome of this discussion is to not use/ introduce smarter pointers in 
our public API's right now, it's still worth considering an update to our API 
design principles for new modules.

>Subject: standard smart pointers vs. Qtish wrappers.
>In general, people want to use standard smart pointers.There are a few
>main reasons: std-things are already in Qt API, this is a part of C++ 
>language standard, it requires almost no maintainability, people outside
>of Qt ecosystem most likely get used to standard smart pointers for nine
>years.

I can only second that, we should not invent our own wrappers around std:: 
smart pointers just for the shake of typography. 

>We should also move Qt smart pointers to Qt5Compat module. The destiny
>of QPointer is not well defined so far.

This was not part of the research and should probably discussed separately.

>
>Subject: raw pointers for passing mandatory parameters vs. using 
>references.
>Allow both approaches, recommend using references (and/or smart
>pointers) when acceptable. Not too many arguments collected here, just
>try to make Qt API more modern.

I think because most of the discussion has been centered around the use of 
smart pointers in widgets/layouts/ui centric stuff, we might have lost view on 
the way more generic uses of raw pointers in our API. Some of our classes 
return raw pointers (QModbusReply and things like that come to my mind), where 
ownership is not clear/ now well documented/ not documented at all; and I can 
clearly see said API's benefit of the introduction of smart pointers.  

>
>There are a few irrelevant discussions. Start a new thread if you want
>to continue discussing them, please.
>
>
>Irrelevant subject: smart pointers vs.parent-child lifetime management
>model.
>It’s too fragile to touch in Qt6.Adding smart pointers around is 
>questionable solution, it’s unclear whether it worth doing or not. 
>Having two different but coupled mechanisms for lifetime management is 
>not such a good idea.

True. We might not be able to address it for Qt6, but I think it's still worth 
to keep in mind and re-question the current approach. Daniels patch seems to be 
the best starting point so far.

-- Karsten
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to