B.3 – Введение в C++17
Добавлено 13 октября 2021 в 23:19
Что такое C++17?
В сентябре 2017 года ISO (Международная организация по стандартизации) одобрила новую версию C++ под названием C++17. C++17 содержит изрядное количество нововведений.
Нововведения в C++17
Вот список основных улучшений, добавленных в C++17. Обратите внимание, что этот список не является исчерпывающим, а скорее предназначен для выделения некоторых ключевых интересных улучшений.
- идентификатор препроцессора
__has_include
для проверки, доступны ли дополнительные файлы заголовков; - инструкции
if
, которые вычисляются во время компиляции; - инициализаторы в инструкциях
if
иswitch
; - встраиваемые переменные (6.8 – Глобальные константы и встраиваемые (inline) переменные);
- выражения свёртки;
- вложенные пространства имен теперь могут быть определены как пространство имен
X::Y
(6.2 – Пользовательские пространства имен); - удаление
std::auto_ptr
и некоторых других устаревших типов; static_assert
больше не требует параметра диагностического текстового сообщения (7.17 – assert и static_assert);std::any
;std::byte
;std::filesystem
;std::optional
;std::shared_ptr
теперь может управлять массивами в стиле C (ноstd::make_shared
пока не может их создавать) (M.7 –std::shared_ptr
);std::size
(10.2– Массивы (часть 2));std::string_view
(10.7 – Знакомство сstd::string_view
);- объявления структурированной привязки (11.5 – Возвращение значений по значению, по ссылке и по адресу, но можно использовать полный урок);
- вывод шаблонов для конструкторов;
- триграфы удалены;
typename
теперь можно использовать (вместоclass
) в параметре шаблона;- символьные литералы UTF-8 (
u8
).