On Tuesday 23 May 2017 10:44:11 Ville Voutilainen wrote:
> How is this even a SiC?
Just as you can detect whether a function is overloaded (taking the address
without cast fails), you can detect the const on the return value. Andre shows
the difference for QVector. A user could write something like:
const QVector<T> foo();
for (auto e : foo()) // foo() returns const, no need to prevent detaching
....
and with dropping the const, it would suddenly detach.
Of course, if you receive a CoWed container, you should not rely on a const
return type, but enforce const on the call site:
const auto foos = foo();
for (auto e: foos)
....
This is what makes it a QUIP-6 Cat-A SiC: the latter works with both Qt
versions, and, arguably, is what should have been written from the get-go.
Thanks,
Marc
--
Marc Mutz <[email protected]> | Senior Software Engineer
KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
Tel: +49-30-521325470
KDAB - The Qt, C++ and OpenGL Experts
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development