Setzt C ++ 14 neue Schlüsselwörter in C ++ ein?
Des C++ Standards Committee neigt zu scheuen, neue keywords hinzuzufügen, um die Sprache, noch die mit C++11 war das nicht der Fall. Einige Beispiele:
constexpr
decltype
thread_local
auto //New usage
noexcept
nullptr
static_assert
alignof
alignas
Gibt es neue Schlüsselwörter eingeführt, mit C++14?
InformationsquelleAutor der Frage Nikos Athanasiou | 2014-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tabelle 4 (Keywords) in N3936 (C++14):
Tabelle 4 in N3337 (C++11):
...das ist eine weitschweifige Art zu sagen "Nein".
(
override
undfinal
sind "Bezeichner mit besonderer Bedeutung" und sind in Tabelle 3 aufgeführten;and
etc. "alternative Darstellungen...für bestimmte Operatoren und angeben" und sind aufgeführt in Tabelle 5. Weder Tabelle wechselte zwischen C++11 und C++14.)InformationsquelleAutor der Antwort T.C.
Ich bin dieses posting eine Antwort zum Wohle des Gebens tools für die Suche nach Antworten auf ähnliche Fragen stellen.
Den standard-Entwurf wird derzeit gehalten, in einem öffentlichen GitHub-repository. Das heißt, Sie können diese Frage GitHub selbst!
Die Tabelle der keywords auf die Datei
source/lex.tex
. Wenn Sie eine Schuld auf ihm, finden wir, dass die Letzte änderung auf die Tabelle der keywords fand wieder im August 2011 (es ist tatsächlich der erste commit: die Tabelle hat sich nicht geändert, da der repo-live ging, um die Zeit C++11 wurde abgeschlossen).Alternativ können wir Fragen GitHub vergleichen Sie die beiden Entwürfe, die verschickt wurden, für die Abstimmung für beide Versionen der standard: N3337 und N3936. Ein diff zwischen den beiden zeigt, dass die änderungen
lex.tex
änderte nichts in die Tabelle der keywords.InformationsquelleAutor der Antwort R. Martinho Fernandes
Keine neue keywords Hinzugefügt werden, die mit C++14. Dies ist nicht überraschend, da C++14 ist gedacht als ein kleines upgrade auf C++11 hauptsächlich mit der Bereinigung von bugs und kleinere, low-impact, Verbesserungen. Die nächste große Veränderung wird wahrscheinlich C++'17', wo ich erwarten würde, dass Sie neue keywords einmal mehr.
Ich denke, es ist eine überlegung Wert warum der Ausschuss scheut, neue keywords hinzuzufügen (und co-übrigens, warum Sie falsch sind, enthalten
auto
auf Ihrer Liste). Das größte problem mit neuen keywords ist, dass in C++ kann man nicht mit einem Schlüsselwort als Kennung was bedeutet, dass das hinzufügen einer neuen keyword-Pausen bestehenden code. Umwidmungauto
dann, nicht zu brechen Ihre Herrschaft, da keine vorhandenen code verwenden könnteauto
als Bezeichner sowieso.So, um zu akzeptieren, ein neues Schlagwort braucht es eine Begründung dafür, dass überwiegt die Kosten einer möglichen Auseinandersetzung mit den bestehenden code und keine sinnvollen Art und Weise zu implementieren, die gleiche Sache, ohne ein neues Stichwort. Im Fall von C++11 der Ausschuss nahm ein paar Vorschläge, die erforderlich sind neue Schlüsselwörter, da Sie fühlte, dass der nutzen überwog die Kosten nicht, weil Sie nicht hassen, um neue keywords hinzufügen.
Es ist auch, warum, wenn Sie schauen hinunter die Liste, die Sie gab, jeder ist ein Verbindung keyword da, dass verringert die chance, dass Sie in Konflikt geraten mit bestehenden Bezeichner.
InformationsquelleAutor der Antwort Jack Aidley