C++17 was supposed to be a major update of the C++ ISO standard. After the Jacksonville meeting (29.02 – 05.03) it looks like it’s rather going to be a major disappointment. I’m not trying to downplay the things that have been voted into the C++17 standard so far, but all major features we hoped for this new version were moved out: modules, concepts, ranges, coroutines, uniform function call syntax.
Here is a brief report of the meetings, Trip report: C++ meeting at Jacksonville, and a quote of what was moved out for the next version:
Let me start enumerating the things we are not going to have in C++17:
- Modules: They will not be in C++17, but in a separate technical specification. That is really a pity, as we will be for more years without having what I was expecting to let me get rid of the text substitution paradigm of the include directive as well as improve compilation times.
- Concepts: They will not be integrated in C++17, but stay for now in their own technical specification. There were concerns about some issues in the TS, which I do not consider essential. Despite that there is implementation experience and even other TS depends on it, it was rejected to move concepts to the IS.
- Ranges: This is a library solution highly depending on concepts. So, no way.
- Coroutines: There was a very sound proposal with implementation experience. However, again this was targeted to another technical specification.
Besides that, we also will not have the half of uniform function call syntax that I thought was not controversial. To be clear, I really wanted both halves.
You can discuss on the report on reddit. The general feeling is disappointment though.
It looks like C++17 will be a big disappointment. Jacksonville committee could not agree on any major features. Oh, well — back to Haskell.
— Bartosz Milewski (@BartoszMilewski) March 5, 2016
On a side note, standard C++ library in Visual Studio 2015 update 2 is C++17 feature complete (on what has been voted so far prior to the Jacksonville meeting).