Важная информация
Показано с 1 по 1 из 1

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

  1. #1 Утверждён стандарт C++17 
    Разбирающийся
    Регистрация
    09.04.2014
    Сообщений
    86
    Сказал(а) спасибо
    0
    Поблагодарили 15 раз(а) в 11 сообщениях
    Комитет 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:air(5.0, false), явно не задавая типы "double, bool");
    • Inline-переменные, которые можно определять в заголовочных файлах;
    • Добавлена библиотека для работы с ФС, основанная на boost::filesystem;
    • Из библиотеки TS I перенесены std::string_view, std:ptional и 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.

    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  2. Пользователь сказал cпасибо:

    >Quiet Snow< (12.09.2017)

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •