Утверждён стандарт C++17

Пятница, 8 сентября 2017 г.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e

Комитет ISO по стандартизации языка C++ единогласно утвердил спецификацию C++1z в качестве международного стандарта «C++17». Представленные в спецификации возможности уже полностью поддерживаются в компиляторах GCC и Clang, а также частично реализованы в Intel C++ и Visual C++. Поддерживающие C++17 стандартные библиотеки реализованы в рамках проекта Boost.

В следующие два месяца утверждённая спецификация будет находиться на стадии подготовки документа к публикации, на которой будет проведена работа по редакторской правке орфографических ошибок и опечаток. В начале ноября результирующий вариант документа будет направлен в ISO для публикации под формальным именем ISO/IEC 14882:2017. Тем временем, комитет уже начал работу над следующим стандартом C++20 (C++2a) и рассмотрел на последнем совещании возможные новшества.

Основные особенности C++17:

Возможность инициализации переменных внутри выражений if и switch;
Возможность использования кодировки UTF-8 в символьных литералах;
Шестнадцатеричные литералы с плавающей запятой;
Указание текстового сообщения в static_assert теперь опционально;
Удалена поддержка триграфов;
Возможность указания typename (как альтернативы классам) в параметрах вложенного шаблона;
Новые правила вывода типа «auto» из списка инициализации (braced-init-list)
Возможность упрощённого определения вложенных параметров пространств имён: «namespace X: Y {…}» вместо «namespace X { namespace Y {…}}»;
Возможность указания атрибутов для пространств имён и перечислений;
Новые стандартные атрибуты [[fallthrough]], [[maybe_unused]] и [[nodiscard]];
Проверка на неизменность (константность) для всех нетипизированных аргументов шаблонов;
Сворачивание выражений для вариативных шаблонов;
Раскрытие выражений «if» на стадии компиляции, если заданное внутри условие является константой;
Структурированные привязки, например, «auto [a, b] = getTwoReturnValues ()»;
Автоматическое определение типов конструктора шаблонов (например, теперь можно указывать std: pair (5.0, false), явно не задавая типы «double, bool»);
Inline-переменные, которые можно определять в заголовочных файлах;
Добавлена библиотека для работы с ФС, основанная на boost: filesystem;
Из библиотеки TS I перенесены std: string_view, std: optional и std: any;
Добавлен std: uncaught_exceptions в качестве замены std: uncaught_exception;
Новые функции вставки try_emplace и insert_or_assign для std: map и std: unordered_map;
Унифицирован доступ к контейнерам std: size, std: empty и std: data;
Определены непрерывные итераторы (contiguous iterators);
Удалены устаревшие типы и функции, в том числе std: auto_ptr и std: random_shuffle;
Представлены параллельно выполняемые варианты алгоритмов STL;
Добавлены дополнительные математические функции, включая эллиптические интегралы и функции Бесселя;
Представлены std: variant и std: byte;
Новые свойства логического оператора: std: conjunction, std: disjunction и std: negation.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e


Просмотров: 799
Рубрика: Hi-Tech


Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003

Февраль 2017: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28