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