Эта таблица предоставляет частичный список элементов языка C++, которые были введены с C++ 17 и его соответствующего Polyspace® поддержка. Если ваш код содержит неподдерживаемые конструкции, Polyspace сообщает об ошибке компиляции.
C++ 17 Std Ref | Описание | Поддержанный |
---|---|---|
C++ 2017-N3921 | std::string-view : Наблюдать за содержимым std::string объект без владения ресурсом | Да |
C++ 2017-N3922 |
| Да |
C++ 2017-N3928 | The static_assert объявление больше не требует второго аргумента. Вызов static_assert без сообщения теперь разрешено: static_assert(N > 0); | Да |
C++ 2017-N4051 | C++ имеет шаблоны, которые не template <template <typename> typename Tmpl> struct X; | Да |
C++ 2017-N4086 | Начиная с C++ 17, триграфы больше не поддерживаются. | Нет |
C++ 2017-N4230 | Начиная с C++ 17, используйте квалифицированное имя в определении пространства имен, чтобы задать сразу несколько вложенных пространств имен. Для образца эти фрагменты кода эквивалентны:
| Да |
C++ 2017-N4259 | Функция std::uncaught_exceptions введен в C++ 17, который возвращает количество исключений в коде, которые не обрабатываются. Функция std:uncaught_exception , которое возвращает логическое значение, устарело. | Да |
C++ 2017-N4266 | Начиная с C++ 17, пространства имен и перечислители могут быть аннотированы с атрибутами, чтобы позволить более четкую коммуникацию намерений разработчика. | Да |
C++ 2017-N4267 | Начиная с C++ 17, префикс u8 поддерживается. Этот префикс создает UTF-8 буквальный символ. Значение литерала UTF-8 символов равно его значению кодовой точки ISO 10646, если значение кодовой точки находится в блоках C0 Controls и Basic Latin Unicode. | Да |
C++ 2017-N4268 | Разрешить постоянную оценку аргументов шаблона типа nontype. | Да |
C++ 2017-N4295 | Разрешить выражения сгиба | Да |
C++ 2017-N4508 | Разрешить несвоевременные std::shared_mutex
| Использование std::shared_mutex не вызывает ошибки компиляции. Polyspace не поддерживает совместное использование объектов мьютекса при помощи std::shared_mutex . |
C++ 2017-P0001R1 | Удалите использование register ключевое слово | Да |
C++ 2017-P0002R1 | Удаление operator++(bool)
| Да |
C++ 2017-P0003R5 | Удалите устаревшие спецификации исключений при помощи throw(<>)
| Bug Finder удаляет спецификацию исключения, заданную при помощи throw() операторы. Code Prover вызывает ошибку компиляции при throw() операторы присутствуют в коде C++ 17. |
C++ 2017-P0012R1 | Сделайте спецификации исключений частью системы типов | Да |
C++ 2017-P0017R1 | Агрегированная инициализация классов с базовыми классами | Да |
C++ 2017-P0018R3 | Разрешить захват указателя мыши *this в Лямбда выражениях | Да |
C++ 2017-P0024R2 | Стандартизация технической спецификации C++ для расширения для параллелизма | Polyspace поддерживает эту функцию при использовании компиляторов Visual 15.x и Intel C++ 18.0. |
C++ 2017-P002842 | Использование пространств имен атрибутов без повторения | Да |
C++ 2017-P0035R4 | Динамическое выделение памяти для совмещенных данных | Да |
C++ 2017-P0036R0 | Унарные выражения и пустые пакеты параметров | Да |
C++ 2017-P0061R1 | Использование __has_include в условиях препроцессора | Да |
C++ 2017-P0067R5 | Элементарные преобразования строк | Нет |
C++ 2017-P0083R3 | Сращивание карт и наборов | Polyspace поддерживает эту функцию, когда используемый вами компилятор также поддерживает эту функцию. Для образца Polyspace поддерживает эту функцию, когда вы используете g++ в качестве компилятора. |
C++ 2017-P0088R3 | std::variant | Частично поддерживается. |
C++ 2017-P0091R3 | Вычет аргументов шаблона для шаблонов классов | Частично поддерживается. |
C++ 2017-P0127R2 | Параметры шаблона, не относящиеся к типу, которые имеют автоматический тип | Да |
C++ 2017-P0135R1 | Гарантированная копия elision | Частично поддерживается. |
C++ 2017-P0136R1 | Новая спецификация для наследования конструкторов | Нет |
C++ 2017-P0137R1 | Замена объектов класса, содержащих ссылочные представителей | Да |
C++ 2017-P0138R2 | Прямая-список-инициализация перечислений | Да |
C++ 2017-P0145R3 | Более строгий порядок оценки выражения | Новый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 17. |
C++ 2017-P0154R1 | Оборудование помех | Поддерживается с помощью компилятора Visual Studio |
C++ 2017-P0170R1 | constexpr Лямбда-выражения | Частично поддерживается |
C++ 2017-P018R0 | Различающиеся начальные и конечные типы в диапазонных for циклы | Да |
C++ 2017-P0188R1 | [[fallthrough]] признак | Да |
C++ 2017-P0189R1 | [[nodiscard]] признак | Да |
C++ 2017-P0195R2 | Пакуйте расширения в объявлениях using- | Да |
C++ 2017-P0212R1 | [[maybe_unused]] признак | Да |
C++ 2017-P0217R3 | Структурированные привязки | Polyspace не поддерживает связывание при помощи rvalue. |
C++ 2017-P0218R1 | std::filesystem | Нет |
C++ 2017-P0220R1 | std::any | Да |
C++ 2017-P0220R1 | std::optional | Bug Finder поддерживает синтаксис. Семантика частично поддерживается. Code Prover не поддерживает эту функцию. |
C++ 2017-P0226R1 | Математические специальные функции | Нет |
C++ 2017-P0245R1 | Шестнадцатеричные литералы с плавающей точкой | Да |
C++ 2017-P0283R2 | Игнорировать неизвестные атрибуты | Да |
C++ 2017-P0292R2 | constexpr если операторы | Да |
C++ 2017-P0298R3 | std::byte
| Да |
C++ 2017-P0305R1 | init-операторы для if и switch | Да |
C++ 2017-P0386R2 | Встроенные переменные | Нет |
C++ 2017-P0522R0 | Активируйте частичные упорядоченные расположения, чтобы определить, является ли шаблон шаблон-аргумент допустимым совпадением для параметра шаблона | Частично поддерживается |
C++ standard version (-cpp-version)