The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Утверждён стандарт C++17"
Отправлено opennews, 08-Сен-17 00:31 
Комитет ISO по стандартизации языка C++ единогласно утвердил (https://herbsutter.com/2017/09/06/c17-is-formally-approved/) спецификацию C++1z в качестве международного стандарта "C++17". Представленные в спецификации возможности уже полностью поддерживаются (http://en.cppreference.com/w/cpp/compiler_support) в  компиляторах  GCC (https://gcc.gnu.org/projects/cxx-status.html#cxx1z) и Clang (http://clang.llvm.org/cxx_status.html#cxx17), а также частично реализованы в Intel C++ (https://software.intel.com/en-us/articles/c17-features-suppo... и Visual C++ (https://blogs.msdn.microsoft.com/vcblog/2017/08/11/c17-featu.... Поддерживающие C++17 стандартные библиотеки реализованы в рамках проекта Boost (http://www.boost.org/).


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


Основные (http://en.cppreference.com/w/cpp/compiler_support) особенности (https://en.wikipedia.org/wiki/C%2B%2B17#New_features) C++17:

-  Возможность инициализации переменных внутри выражений  if и switch;
-  Возможность использования кодировки UTF-8 в символьных литералах;
-  Шестнадцатеричные литералы с плавающей запятой;
-  Указание текстового сообщения в static_assert  теперь опционально;
-  Удалена поддержка триграфов (https://ru.wikipedia.org/wiki/%D0%A2%D1%...
-  Возможность указания 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.

URL: https://herbsutter.com/2017/09/06/c17-is-formally-approved/
Новость: https://www.opennet.ru/opennews/art.shtml?num=47153

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру