[Development] gsl::owner (Was: Setters: Clarifying the ownership)

Иван Комиссаров abbapoh at gmail.com
Tue Jul 31 20:52:11 CEST 2018



Иван Комиссаров

> 31 июля 2018 г., в 21:39, Konstantin Tokarev <annulen at yandex.ru> написал(а):
> 
> 
> 
> 31.07.2018, 21:35, "Иван Комиссаров" <abbapoh at gmail.com>:
>> I prefer the solution from the thread "unique_ptr and Qt" about using smart pointers for transferring ownership explicitly. We can use std::observer_ptr from c++20 to indicate the places that do not take ownership.
>> I think, using gsl::owner is a wrong way of doing things, it's the way that can be source and (maybe) binary compatible, but that's a workaround, not a solution.
> 
> It's binary compatible, because owner<T> = T. It's not a solution, just annotation for people static analyzers (like e.g. "emit" keyword in Qt)
> 
>> However, the solution can require too much work to do.
> 
> It also requires changic public APIs, which can only be done in Qt 6.
> 

That's why we discussing that right now, not after the qt6 will be released:)

>> 
>> Иван Комиссаров
>> 
>>> 31 июля 2018 г., в 16:04, Eric Lemanisser <eric.lemanissier at gmail.com> написал(а):
>>> 
>>> Please, don't introduce another type alias. It would loose the advantage of static analysis like http://clang.llvm.org/extra/clang-tidy/checks/cppcoreguidelines-owning-memory.html
>>> 
>>>> Le mar. 31 juil. 2018 à 14:52, Giuseppe D'Angelo via Development <development at qt-project.org> a écrit :
>>>> Hi,
>>>> 
>>>>> On 31/07/18 13:11, Sérgio Martins via Development wrote:
>>>>> I would recommend however that our docs show T* instead of gsl::owner<T>
>>>>> and continue to include "Takes ownership of foo" in the text.
>>>>> While I believe in self-documenting signatures I think it's too much
>>>>> noise and hurts readability, and most devs never heard of gsl.
>>>>> 
>>>>> Should be just an aid for tooling IMO.
>>>> 
>>>> I agree with the rest of your email, but I kind of disagree with this
>>>> particular point, for different reasons:
>>>> 
>>>> * Because we need to educate our users that there's more C++ than Qt out
>>>> there, and the Core Guidelines and the GSL are a fundamental part of
>>>> knowledge for a C++ developer.
>>>> 
>>>> * Even if we consider talking about the GSL too much of a "distraction"
>>>> in the docs, we can simply add our own qOwner type alias, with identical
>>>> semantics, and document what it does and what it means in signatures.
>>>> 
>>>> * Leaving gsl::owner in the signature of a function documentation can
>>>> help clarify situations where the textual documentation does not say
>>>> anything about the ownership. At least, it's one more safeguard against
>>>> adding functions that take/return pointers and don't clearly document
>>>> the ownership.
>>>> 
>>>> However, from a practical point of view, unless someone adds gsl::owner
>>>> _everywhere_ to Qt, we can't report it in the docs, as they would
>>>> otherwise be inconsistent :-(
>>>> 
>>>> My 2 c,
>>>> --
>>>> Giuseppe D'Angelo | giuseppe.dangelo at kdab.com | Senior Software Engineer
>>>> KDAB (France) S.A.S., a KDAB Group company
>>>> Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
>>>> KDAB - The Qt, C++ and OpenGL Experts
>>>> 
>>>> _______________________________________________
>>>> Development mailing list
>>>> Development at qt-project.org
>>>> http://lists.qt-project.org/mailman/listinfo/development
>>> _______________________________________________
>>> Development mailing list
>>> Development at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/development
>> ,
>> 
>> _______________________________________________
>> Development mailing list
>> Development at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/development
> 
> 
> -- 
> Regards,
> Konstantin



More information about the Development mailing list