Sprachdefinition
Die Angaben in diesem Artikel beziehen sich auf den zum Zeitpunkt aktuellen
Working Draft (http://isocpp.org/files/papers/N3797.pdf).
Library
Auch bei der Library wurden einige weitere Dinge im Rahmen des letzten Meetings
wieder herausgenommen. Neben dem erwhnten dynarray gehrt dazu auch
optional<T>. Grund war vor allem, da bestimmte Details des Designs nicht
ausgiebig genug erprobt waren und da dafr eine einheitliche Strategie auch wegen
der neuen Sprachmglichkeiten fr die Library bislang fehlt. Diese
herausgenommenen Teile und weitere Aspekte wie eine Dateisystem-Schnittstelle
werden in weiteren TS in 2014 verffentlicht, sind aber wie gesagt damit noch nicht
endgltig normiert. Anpassungen bei der Verwendung sind zumindest vom
namespace her (std::experimental) zu erwarten.
Eine weitere Erleichterung betrifft die Klasse integral_constant, die benutzt wird um
verschiedene Eigenschaften von Typen abzubilden - i.d.R. ber die Unterklassen
true_type und false_type. Bisher mute der ::value Member mit der
entsprechenden Konstanten genutzt werden. Neu geht das auch, indem man die
Klasse instanziiert und mit dem operator() auf den Wert zugreift.
Ein Vorher-Nachher Beispiel verdeutlicht die Verkrzungsmglichkeiten:
Eine weitere nette Erleichterung der Nutzung von std::tuple ist, da man nun mittels
get<Typ>(tuple) auf ein (eindeutiges) Tuple-Element per Typ zugreifen kann,
statt nur wie bisher ber die Position.
Convenience
Iteratoren
fr
einfache
Generische
Programmierung
Neben den vom Range-for Loop genutzten Funktionen std::begin/std::end, die bei
Containern (und anderen Ranges) die passenden Iteratoren liefern, gibt es nun auch
die Varianten fr die sonstigen verfgbaren Iteratoren: cbegin/cend,
crbegin/crend und rbegin/rend fr konstante und rckwrts durchlaufene
Ranges.
Eine weitere Ergnzung erlaubt nun, da "Forward"-Iteratoren default-konstruierbar
sein mssen. Dies erlaubt die einfachere Gestaltung mancher Algorithmen, weil dort
Hilfsvariablen einfacher definiert werden knnen.
Ausblick
Es ist abzusehen, da erste C++14 kompatible Compiler und Libraries sptestens in
2014 erscheinen. Die Entwicklungsversionen von Clang und libc++ bieten heute
schon fast alles an Features, die oben beschrieben wurden. Die GNU Compiler
Collection ist dicht auf den Fersen. Leider haben einige der groen Hersteller mit
Compilern mit lteren Wurzeln noch deutliche Probleme mit C++11, wobei manche
vielleicht statt einem zuerst kompletten C++11 Release eventuell gleich auf den
C++14 Zug aufspringen.
Erwarten Sie weiterhin Neues aus der C++ Welt. Auf jeden Fall ist C++ mit C++11
und C++14 viel leichter und sicherer nutzbar geworden und auch konzeptuell
schwierige Aspekte wie die Meta-Programmierung erschlieen sich nun in einer
syntaktisch beherrschbareren Variante. Fr die Zukunft sollten Sie weitere
Verbesserungen erwarten, wie zum Beispiel Compile-Time Meta-Information auf
Sprachebene oder die Normierung der vielen Library Komponenten, die in der
Pipeline der Technical Specifications stecken. Schauen Sie regelmig auf
isocpp.org nach um am Ball zu bleiben.
Fr die Embedded Umgebungen erschlieen sich mit C++11/14 vor allem durch
constexpr und damit literale Typen vllig neue Welten in der Typsicheren und
effizienten maschinennahen Kodierung. Lernen Sie diese und wenden Sie sie an!