Is C++21 the Next Standard?
Asked Answered
M

4

12

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?

Manzo answered 5/8, 2016 at 12:48 Comment(12)
Hold on, just let me fire up my time machine and I'll let you know 5 minutes ago.Shocker
I'm... not exactly sure whether this question is on-topic or off-topic...Hixon
I thought there was discussion about a new standard happening in 2019, which goes by c++NEXT, because 1z was already the last latter in the alphabet.Porphyroid
ISOCPP shows C++20.Scald
@Scald Hard to beat ISOCPP for a source. Care to post as an answer?Manzo
That moment when I am sitting here reading this but not even familiar with C++11 yet .. And realize how much I still have to learnGlasser
@Shocker If you're back yet, I didn't need you to use the time machine. I was hoping to know how we're referring to it now. As in: "Since Concepts will probably miss C++17 we'll have to wait for C++20.Manzo
Maybe next time they should go with the new Microsoft naming convention and call the updated standard C++ One.Ruder
@ArchbishopOfBanterbury Both of these comments will probably be deleted within the hour. But I have to say I really loled at that.Manzo
@Downvoter Whew, it was a long time in the works, but I was going to say, this is a C++ question, how could it not have the mandatory downvote? Anyway, I do try really hard to write excellent questions, so if this one could be improved I'd happily take action on a comment. No need to respond though if you're just making sure that the mandatory downvote was applied.Manzo
It goes up in threes: youtube.com/watch?v=-IOMNUayJjIDeckhouse
@Deckhouse I was confused for a couple seconds trying to figure out why this would pertain to c++ :JManzo
S
24

Update: C++20 did become the next standard after C++17 and C++23 is set to be the next version after C++20.

Looking as ISOCPP we see

enter image description here

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

Scald answered 5/8, 2016 at 12:57 Comment(3)
I love that 1998-2001 don't even make the cut. Who needs those years anyway.Rysler
Apparently they didn't feel it need any improvement during those years.Scald
@Rysler It really is amazing that with all the changes in the industry C++ remained relevant without an update for like a decade. Speaks to a very needed market segment I suppose.Manzo
S
12

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.

Somber answered 5/8, 2016 at 12:58 Comment(0)
C
7

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.

Cheerleader answered 5/8, 2016 at 13:50 Comment(12)
So you're saying that the name should distinguish whether it's a released standard. I can appreciate the nuance there, and if there is an official name I don't mind using it. But the standard committee has played pretty fast and lose with C++17. I seldom, if ever, see them refer to C++1z.Manzo
Seriously, running out of letters is hardly a reason for a target date for the next C++ standard. Please keep your answers to the point.Somber
@Somber We don't have time travel. We don't know when the next version will occur. As such, the best we can do is (A) guess when it will occur, and (B) work out a non-ambigous working name for it. Historically, 50% (or more?) of C++ standards where not delivered in the year they where planned for. They claim they will do better: and there is some weak evidence they may (as they have hit 1, and are on track for 2 in a row, and the plan is solid). But discussing what we should call it now is, I believe, important.Cheerleader
@Somber I think he's just pointing out that until the standard is released it gets a "codename". What I'm referring to as C++17 I should really be calling by the code name C++1z. As it will only be officially labeled C++17 when it releases. Similarly talk of C++20 is premature, the codename should be used.Manzo
Ok, I can of course see the point. I think the safest is to call it "the next C++ standard" :-) PS: C++2α and C++2Ω is nice, but we should reserve these names for a C++ standard that ships excellent unicode support :-)Somber
@Somber "the next C++ standard" runs into the next weekend problem. On Friday, when is the next weekend? In addition, you find a note saying to meet someone next weekend: you need to know the date of the note to understand what it is talking about. C++0x and C++1y and C++1z have a clear subject, while "the next standard" doesn't. Is "the next standard" C++1z or C++2x at this point? How about 2 days before C++17 standard is finalized? What about a week before the ratification meeting? I cannot think of an answer that won't require clarifying sometimes.Cheerleader
I don't understand what the problem is with calling it "C++20"? Thus far, the committee has managed 1 release on their schedule and it looks like they'll have 2 on-time releases next year. So what's the harm in assuming they'll go 3-for-3? Worst-case, people have to change to "C++21" or something. My point is that "C++2x" will always be wrong once the committee ships, while C++20 might or might not be wrong, depending on when the standard hits.Cankerous
@NicolBolas C++2x will remain right once the committee ships in the context it was used: it refers to the in-development standard after C++1z in an informal way, not the standard officially named C++2x. Saying it is "wrong" implies that it is claiming it is talking about the standard officially named C++2x, which nobody claims. Talking about C++0x today makes more sense than talking about C++09, and in fact a topic tagged as C++0x on SO makes more sense than a topic tagged as C++09. And extrapolating reliability from Fail Fail Fail Succeed Succeeding is faith!Cheerleader
Nobody talks about C++1y anymore; they call it C++14. If they'd just called it that from the beginning, then when we look back at some of those older discussions, we wouldn't need to ask "which one is C++1y again?" Indeed, pretty much nobody on the committee or associated with them uses "C++1z"; it's always been "C++17". The whole "1z" thing is a construct created by users to fit into the "C++0x" pattern that has long since been outdated. There's no point in continuing that nomenclature.Cankerous
@Yakk Who standardizes these names then? Who are we waiting on to tell us to call it C++2α/C++2x/C++???Manzo
One can (and the Committee often does in mailings) refer to the next standard as c++-next. This will solve the not enough-letters-past-z problem. A bit like Debian, one could have stable, testing and unstable versions. Currently this would be something like -std=c++14, c++1z and c++-next. So c++-next is what is beyond the currently proposed CD.Perambulate
Re the timing of when something becomes c++-next, the moment the that the Committee votes on a feature freeze for the CD. It would be nice if the clang/gcc folks would follow this timing in their options, but of course, their releases might not coincide with the Committee meeting dates.Perambulate
F
0
  • The next standard at the time the question was asked turned out to be c++20 [1] .
  • The next standard ATOW will be c++23 [2].

[1] https://en.cppreference.com/w/cpp/20

[2] https://en.cppreference.com/w/cpp/23

Fuze answered 5/7, 2022 at 13:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.