Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is C++21 the Next Standard?

I heard a lot of buzz about C++17 and C++14 even when C++11 was rolling out.

But now I understand that C++17 is on track to deliver (without Concepts) in the Fall of 2017, but I'm still not sure what the following standard is.

I've heard C++21 kicked around. Is that accurate?

like image 632
Jonathan Mee Avatar asked Aug 05 '16 12:08

Jonathan Mee


3 Answers

Looking as ISOCPP we see

enter image description here

Which shows that at least right now, C++20 is the name they are using.

like image 149
NathanOliver Avatar answered Nov 06 '22 22:11

NathanOliver


No one can definitely say the exact release date. But given the recent C++ releases C++11, C++14, C++17, it seems we have a release cycle of three years.

In fact, Herb Sutter wrote in June 2016:

Note: [...] but for now we’re staying with three years, so the next standard after C++17 will be C++20.

So it will most likely be C++20. And all features that are not ready by then, will probably be postponed to a later C++ version.

If you are interested in C++ development, I recommend to regularly read the C++ subreddit. There are many more resources in the net, of course.

like image 11
dhaumann Avatar answered Nov 06 '22 22:11

dhaumann


You'll note that C++1z is still in use, and it is now feature complete. But it doesn't become C++17 until published in 2017.

At this point, we shouldn't be talking about C++20 or C++21 even if that is the target date. We should be talking about C++2a or C++2x.

The current plan is for a 3 year release cycle, and some grumbles about moving to 2 year release cycle. But it officially remains 3 years, so the target date for the next one is 2020.

However, what should we call it now? C++2x runs into the problem that if there are more than 3 standards releases in 2020s, we run out of letters. At 3 years per release, that would be 2020, 2023, 2026, 2029 -- one too many. And there has been some talk of trying for a 2 year release cycle (maybe even for C++2x, coming out in 2019, which would be hilarious after C++0x coming out in 2011).

Any such confusion will be well worth the bragging rights of breaking the naming cycle, and might introduce C++2α or C++2Ω, which is another plus.

So the answer to your question: the next standard should be called C++2x at this point, and x may be any value between -1 and +3 if history is any guide: the target date is 2020, but about half of all C++ standard releases did not occur in the year they where planned, so take that with a grain of salt.

like image 7
Yakk - Adam Nevraumont Avatar answered Nov 06 '22 23:11

Yakk - Adam Nevraumont