On 18/05/2015 15:30, Andreas Aardal Hanssen wrote:
2015-05-18 14:56 GMT+02:00 Alejandro Exojo <[email protected]
<mailto:[email protected]>>:
El Monday 18 May 2015, Smith Martin escribió:
> You omitted that toInt(&ok) is required to test ok for null,
which is not
> required if ok is a reference.
That's extra work in the implementation in order support a nicer
API to the
users, e.g. to support toInt() with the null value as default
argument, in
addition to the "passing a pointer makes clear that the value could be
modified".
Very true! In fact the "opposite API" to toInt() was chosen in
QIODevice::getChar() to ensure that even the extra line of testing for
OK on the client side could be eliminated. For toInt(), it's rare that
the output arg needs to be tested, but for QIODevice::getChar(), it's
the opposite.
char ch;
if (device->getChar(&ch)) {
// foo
}
http://doc.qt.io/qt-5/qiodevice.html#getChar
Imagine reading code like this:
char ch;
if (device->getChar(ch)) {
// foo, wtf is ch for??
}
Which is exactly what the standard lib does :
<http://en.cppreference.com/w/cpp/io/basic_istream/get> (see overload 2)
Notice that instead of returning a boolean, the stream is returned,
which is then converted to a bool for testing its validity.
See also :
<http://en.cppreference.com/w/cpp/string/basic_string/getline>
So, this is common design as well, and does not seems to cause much
trouble as long as the semantic of the operation is clear :).
Regards,
Julien
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development