pointer check in unit tests

Michael Stahl mst at libreoffice.org
Thu Nov 5 09:25:38 UTC 2020


On 05.11.20 10:09, Michael Stahl wrote:
> On 03.11.20 10:21, Stephan Bergmann wrote:
>> On 03/11/2020 09:37, Miklos Vajna wrote:
>>> (If you see a case where a pointer is returned and it can't be ever
>>> nullptr, then we should fix the return type to a be reference. Caolan
>>> did lots of fixes like that recently.)
>>
>> That's up for debate.  For example, if a sufficiently large fraction 
>> of call sites wants a pointer, it can be awkward to change a 
>> function's return type from pointer to reference.  (And doing so 
>> without carefully auditing all call sites can silently introduce 
>> regressions.)
>>
>> T& is something rather different than T* plus "cannot be null".  Just 
>> as the C++ type system isn't capable of expressing the type "int, but 
>> never 42", it isn't capable of expressing the type "T*, but never 
>> nullptr".
> 
> on a related note, i've heard it claimed that you can have a "T&, but 
> can be null" type in modern C++, as 
> std::optional<std::reference_wrapper<T>>.
> 
> although with ergonomics like
> 
>      std::optional<std::reference_wrapper<Foo>> foo(...);
>      foo->get().member;
> 
> i'm not sure how seriously to take such claims.

oh! there's a proposal to overload operator.() - surely that can only 
improve the situation!

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4477.pdf


More information about the LibreOffice mailing list