[Development] Proposal: Deprecating platforms in Qt 5.6 that don't support lambda
Daniel Teske
Daniel.Teske at theqtcompany.com
Thu Feb 19 13:29:48 CET 2015
Hi,
Standard C++ is evolving in a unprecedented pace at the moment. Both C++11 and
C++14 added a lot of new good features. C++17 is planned to be a big step
again.
Qt needs to evolve together with C++ or it will be a outdated toolkit stuck in
a C++98 world.
As an example, Qt's container classes and C++11 range based for loop do not
mix very well.[1] And for the same reason, the upcoming Ranges TS will not be
too useful for Qt's container.
We have started using some parts of C++11 in Creator a year ago and our
experience is that lambdas (and std::function) are useful everywhere. Today we
have more than 400 lambdas in Creator's source and have several interfaces
that take a std::function.
I would expect that allowing C++11 in Qt would similarly lead to a wider
understanding on how to leverage the new features for better code and better
APIs.
We need to start now and deprecate old compilers that do not support any C++11
features at all. I I suggest requiring support for lambda as
supported by MSVC 2010, g++ 4.5 and clang 3.1 in Qt 5.7 and deprecating all
platforms that do not in Qt 5.6.
daniel
[1] ranged based for uses std::begin(container), which if not overloaded calls
container.begin(), which detaches.
So using range-based can be used:
- If the container is const or
- If the container is unshared or
- To actually change the container's contents
More information about the Development
mailing list