When I'm reading code and I encounter a function call with parameters, if I am not familiar with that function, I look at its documentation. First I look at the signature. If it contains a non-const reference, I know the parameter can be modified. I read the function documentation to see if it is meant to be modified.
What is required inside the function if a pointer is used instead? Is the function required to test the pointer for nil and return in an error state or report an error? That doesn't happen with a reference. martin ________________________________ From: development-bounces+martin.smith=theqtcompany....@qt-project.org <development-bounces+martin.smith=theqtcompany....@qt-project.org> on behalf of Andreas Aardal Hanssen <andr...@hanssen.name> Sent: Monday, May 18, 2015 11:44 AM To: development Subject: Re: [Development] QTextStream::readLine(0) is an ambiguous overload in 5.5 2015-05-18 11:40 GMT+02:00 André Somers <an...@familiesomers.nl<mailto:an...@familiesomers.nl>>: Andreas Aardal Hanssen schreef op 18-5-2015 om 11:35: Qt convention is to promote pointers for out parameters to make it immediately clear that your input can be modified. Out references, or non-const reference parameters, have traditionally been discouraged because they make the code harder to read. It's not about what's proper C/C++. Pointers can be just as opague. In terms of the above example: I cannot see from any of the parameters to those functions what their types are. If they are already pointers, they may already get modified. On the other hand: that pointer may not get modified at all. I created https://bugreports.qt.io/browse/QTCREATORBUG-14468 for some tooling support to get a better feedback on what's going on. At the end of the day, &tmp is always a pointer, whereas tmp may not be. It's simply easier to read. Having reference out parameters is a API design mistake in Qt. Agree or not but deviating from this makes for an inconsistent API. Andreas -- Andreas Aardal Hanssen
_______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development