В декабре 2017 года Международная организация по стандартизации (англ. «ISO») утвердила новую версию языка C++ под названием C++17. Мы уже ранее говорили о нововведениях в версии C++11 и в версии C++14.
Что нового в C++17?
Вот список основных улучшений, добавленных в C++17 (это не полный список всего добавленного, а ключевые улучшения, представляющие интерес):
идентификатор препроцессора __has_include
для проверки доступности дополнительных заголовочных файлов;
if-стейтменты, которые обрабатываются во время компиляции;
инициализаторы в стейтментах if и switch;
встроенные переменные;
fold-выражения;
вложенные пространства имен теперь можно определять как пространство имен X::Y
;
удаление std::auto_ptr и других устаревших типов;
static_assert больше не требует параметра в виде текстового сообщения;
std::any;
std::byte;
std::filesystem;
std::optional;
std::shared_ptr теперь может управлять массивами C-style (но через std::make_shared() их по-прежнему нельзя создавать);
std::size;
триграфы были удалены;
UTF-8 (u8) символьные литералы.
Примечание: К каждой теме (из списка нововведений, расположенного выше), которую мы рассматривали, указана ссылка на соответствующий урок. Если ссылка на урок не указана, значит мы не рассматривали эту тему. Впрочем, вы всегда сможете найти дополнительную информацию в Google или Yandex.