Das ISO-C++-Komitee hat bei seiner Sitzung in Oulu den Funktionsumfang von C++17 abgeschlossen und den Entwurf zur internationalen Prüfung freigegeben. Das berichtet Herb Sutter am 30. Juni 2016. Der Committee Draft ist damit noch kein endgültig veröffentlichter Standard.
variant, optional und any erfüllen unterschiedliche Aufgaben
Neu aufgenommen wurde std::variant, eine typsichere Alternative zu Unions mit einer festgelegten Auswahl möglicher Typen. std::optional beschreibt dagegen einen Wert, der auch fehlen kann. std::any kann Werte unterschiedlicher Typen aufnehmen, ohne deren vollständige Auswahl bereits in der Typdeklaration festzulegen. Die drei Werkzeuge sind deshalb nicht austauschbar.
Für Zeichenketten sieht C++17 std::string_view vor. Die nicht besitzende Sicht auf Text kann unnötige temporäre Zeichenketten vermeiden. Sie übernimmt aber nicht die Lebensdauer der zugrunde liegenden Daten. Wenn eine aufgerufene Funktion ohnehin wieder einen eigenen std::string benötigt, kann die Konvertierung weiterhin anfallen. Ein pauschales Geschwindigkeitsversprechen wäre daher falsch.
Standardentwurf und Compilerunterstützung getrennt prüfen
Während der internationalen Prüfung sollen nationale Gremien Kommentare einreichen. Sutter nennt Sitzungen im November 2016 und März 2017 für deren Bearbeitung. Der festgelegte Funktionsumfang beendet also nicht die technische Prüfung und mögliche Korrekturen.
Bereits Visual Studio 2015 Update 2 hatte erste Funktionen aus dem damaligen C++17-Arbeitsstand ergänzt. Für bestehende Codebasen ist entscheidend, welche Sprach- und Bibliotheksfunktionen die tatsächlich eingesetzte Toolchain unterstützt. Die Verabschiedung eines Entwurfs allein aktualisiert weder Compiler noch Standardbibliothek eines Projekts.

