2016-08-05 29 views
8

Ich habe eine Menge Buzz über C++ 17 und C++ 14 gehört, selbst als C++ 11 auf den Markt kam.Ist C++ 21 der nächste Standard?

Aber jetzt verstehe ich, dass C++ 17 auf dem richtigen Weg ist (ohne Konzepte) im Herbst 2017 zu liefern, aber ich bin immer noch nicht sicher, was die folgende Norm.

Ich habe gehört, C++ 21 trat herum. Ist das genau?

+20

Warte, lass mich meine Zeitmaschine anwerfen und ich werde dich vor 5 Minuten wissen lassen. – Pubby

+2

Ich bin ... nicht genau sicher, ob diese Frage zum Thema oder Off-Topic ist ... – VermillionAzure

+2

Ich dachte es gäbe eine Diskussion über einen neuen Standard, der 2019 passiert, der um C++ NEXT geht, weil 1z schon war das letzte im Alphabet. – midor

Antwort

17

als ISOCPP Blick sehen wir

enter image description here

Welche, dass zumindest zeigt jetzt C++ 20 ist der Name, den sie verwenden.

+10

Ich liebe, dass 1998-2001 nicht einmal den Schnitt machen. Wer braucht diese Jahre sowieso. – Barry

+5

Anscheinend haben sie nicht Ich glaube, dass es in diesen Jahren Verbesserungen braucht. " – NathanOliver

+2

@Barry Es ist wirklich erstaunlich, dass C++ mit all den Veränderungen in der Branche ohne ein Update für ein Jahrzehnt relevant blieb. Ich spreche von einem sehr benötigten Marktsegment. –

9

Niemand kann definitiv das genaue Erscheinungsdatum sagen. Aber angesichts der jüngsten C++ - Releases C++ 11, C++ 14 und C++ 17 scheint es, als hätten wir einen Veröffentlichungszyklus von drei Jahren.

Tatsächlich Herb Sutter wrote in June 2016:

Hinweis: [...], aber jetzt sind wir mit 3 Jahren bleiben, so dass der nächste Standard nach C++ 17 C++ 20 sein wird.

Also wird es wahrscheinlich C++ 20 sein. Und alle Features, die bis dahin noch nicht fertig sind, werden wahrscheinlich auf eine spätere C++ - Version verschoben.

Wenn Sie interessiert sind in C++ Entwicklung, empfehle ich die C++ subreddit regelmäßig zu lesen. Es gibt natürlich many more resources im Netz.

7

Sie werden feststellen, dass C++ 1z immer noch verwendet wird, und es ist jetzt Feature abgeschlossen. Aber es wird nicht C++ 17 bis 2017 veröffentlicht.

An dieser Stelle sollten wir nicht sprechen etwa 21 C++ 20 oder C++ auch wenn das das Zieldatum ist. Wir sollten über C++ 2a oder C++ 2x sprechen.

Der aktuelle Plan ist für 3 Jahre Release-Zyklus, und einige murrt über den Umzug nach 2 Jahren Release-Zyklus. Aber es bleibt offiziell 3 Jahre, so dass der Zieltermin für die nächste ist 2020

Doch was sollten wir es jetzt nennen? C++ 2x läuft auf das Problem hinaus, dass es in den 2020er Jahren mehr als 3 Standard-Releases gibt. Bei 3 Jahren pro Freisetzung wären das 2020, 2023, 2026, 2029 - eine zu viele. Und es wurde darüber geredet, einen 2-jährigen Veröffentlichungszyklus zu versuchen (vielleicht sogar für C++ 2x, das 2019 herauskommt, was nach C++ 0x, das 2011 herauskommt, urkomisch wäre).

Jede solche Verwirrung gut sein lohnt sich die prahlen von der Namens Zyklus zu brechen, und vielleicht C++ 2α oder C++ 2Ω, was ein weiterer Pluspunkt ist, einzuführen.

Also die Antwort auf Ihre Frage: der nächste Standard sollte zu diesem Zeitpunkt C++ 2x genannt werden, und x kann einen Wert zwischen -1 und +3 haben, wenn die Geschichte eine Richtlinie ist: Das Zieldatum ist 2020, aber Etwa die Hälfte aller C++ - Standard-Releases kam in dem Jahr, in dem sie geplant waren, nicht vor. Nehmen Sie das also mit einer Prise Salz.

+3

Ich sage, dass der Name unterscheiden sollte, ob es ein veröffentlichter Standard ist. Ich kann die Nuance dort schätzen, und wenn es einen offiziellen Namen gibt, macht es mir nichts aus, ihn zu benutzen Dard Committee hat ziemlich schnell gespielt und verliert mit C++ 17. Ich sehe selten, wenn überhaupt, dass sie sich auf C++ 1z beziehen. –

+0

Ernsthaft, das Auslaufen von Briefen ist kaum ein Grund für ein Zieldatum für den nächsten C++ - Standard. Bitte halten Sie Ihre Antworten auf den Punkt. – dhaumann

+1

@dhaumann Wir haben keine Zeitreisen. Wir wissen nicht, wann die nächste Version erscheinen wird. Als solches ist das Beste, was wir tun können, (A) zu erraten, wann es eintreten wird, und (B) einen nicht zweideutigen Arbeitsnamen dafür auszuarbeiten. Historisch gesehen wurden 50% (oder mehr?) C++ - Standards in dem Jahr, in dem sie geplant waren, nicht ausgeliefert. Sie behaupten, dass sie es besser machen werden. Und es gibt einige schwache Beweise, die sie vielleicht haben (wie sie 1 getroffen haben, und sind für 2 in einer Reihe, und der Plan ist solide). Aber zu diskutieren, wie wir es jetzt nennen sollten, ist meines Erachtens wichtig. – Yakk