Co to jest C++17?
We wrześniu 2017 ISO (Międzynarodowa Organizacja Normalizacyjna) zatwierdziła nową wersję C++, zwaną C++17. C++17 zawiera sporo nowej zawartości
Nowe ulepszenia w C++17
Dla Twojej ciekawości, oto lista głównych zmian, które dodaje C++17. Należy pamiętać, że ta lista nie jest wyczerpująca, ale ma raczej na celu podkreślenie niektórych kluczowych zmian będących przedmiotem zainteresowania.
- Dedukcja argumentów szablonu klasy (CTAD) (13.14 -- Przewodniki dedukcji i dedukcji szablonu klasy (CTAD))
- instrukcje if, które rozwiązują się w czasie kompilacji (8.4 — Constexpr if instrukcje)
- Inicjatory w instrukcjach if i instrukcjach switch (wspomniane w 13.y -- Używanie języka referencja)
- zmienne wbudowane (7.10 — Współdzielenie stałych globalnych w wielu plikach (przy użyciu zmiennych wbudowanych))
- Wyrażenia składane (jeszcze nie ma tutoriala)
- Obowiązkowe eliminowanie kopiowania w niektórych przypadkach (wspomniane w 14.15 — Inicjalizacja klasy i elizja kopiowania)
- Zagnieżdżone przestrzenie nazw można teraz zdefiniować jako przestrzeń nazw X::Y (7.2 -- Przestrzenie nazw zdefiniowane przez użytkownika i operator rozpoznawania zakresu)
- Usunięcie std::auto_ptr i niektórych innych przestarzałych typów
- static_assert nie wymaga już parametru diagnostycznej wiadomości tekstowej (9.6 — Assert i static_assert)
- std::any (jeszcze nie ma tutoriala)
- std::byte (jeszcze nie ma tutoriala)
- std::filesystem (nie ma jeszcze tutoriala) jeszcze)
- std::opcjonalne (12.15 -- std::opcjonalne)
- std::shared_ptr może teraz zarządzać tablicami w stylu C (ale std::make_shared nie może jeszcze ich tworzyć) (22.6 — std::shared_ptr)
- std::size (11.2 -- Tablice (Część II))
- std::string_view (5.8 — Wprowadzenie do std::string_view)
- Deklaracja strukturalnego wiązania (jeszcze nie ma tutoriala)
- Usunięto trigrafy
- nazwa typu może być teraz używana (zamiast klasy) w szablonie szablonu parametr
- Literały znakowe UTF-8 (u8) (jeszcze nie ma tutoriala)

