Поддерживаемые в Polyspace элементы языка C++ 14

Эта таблица предоставляет частичный список элементов языка C++, которые были введены с C++ 14 и его соответствующего Polyspace® поддержка. Если ваш код содержит неподдерживаемые конструкции, Polyspace сообщает об ошибке компиляции.

C++ 14 Std RefОписаниеПоддержанный
C++ 2014-N3323Неявное преобразование из типа класса в определенных контекстах, таких как delete или switch оператор.Эта функция C++ 14 позволяет неявное преобразование из типа класса в определенных контекстах. Новый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3462Больше SFINAE- std::result_ofДа
C++ 2014-N3472Двоичные литералы, например 0b100.Да
C++ 2014-N3545operator() в integral_constant шаблон constexpr напечататьДа
C++ 2014-N3637Отношение между std::async и деструктор std::futureНовый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3638Автоматическое вычитание типа возврата для функций, в которых явный тип возврата не задан

Да.

В некоторых случаях Code Prover может показать ошибки компиляции.

C++ 2014-N3642Суффиксы для пользовательских литералов, указывающих время (h, min, s, ms, us, ns) и строки (s)Да
C++ 2014-N3648Инициализация захваченных представителей в лямбда-функциях

Да.

В некоторых случаях во время инициализации Code Prover может вызывать соответствующие конструкторы больше раз, чем нужно.

C++ 2014-N3649

Обобщенные (полиморфные) лямбда-выражения:

  • Использование auto type-specier для параметра и типа возврата

  • Преобразование лямбда-выражений без обобщения в указатель на функцию.

Да
C++ 2014-N3651Шаблоны переменныхДа
C++ 2014-N3652Объявления, условия и циклы в constexpr функций.Да
C++ 2014-N3653

Инициализация агрегатных классов с меньшим количеством инициализаторов, чем представители

Для образца эта инициализация имеет меньше инициализаторов, чем представители. Область представителя c инициализируется значениями 0 и d инициализируется значением s.

struct S { 
   int a; 
   const char* b;
   int c;
   int d = b[a];};
S ss = { 1, "asdf" };

Да
C++ 2014-N3654std::quotedДа
C++ 2014-N3656std::make_uniqueДа
C++ 2014-N3658std::integer_sequenceДа
C++ 2014-N3658std::shared_lock

Нет.

Использование std::shared_lock не вызывает ошибок компиляции, но конструкция семантически не поддерживается.

C++ 2014-N3664Вызывающие new и delete операторы пакетами.Эта функция C++ 14 уточняет, как последовательные вызовы new оператор реализован. Новый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3668std::exchangeЧастично поддерживается.
C++ 2014-N3670Использование std::get с типом данных, чтобы получить один элемент в std::tuple (при условии наличия только одного элемента типа в кортеже)Да
C++ 2014-N3671Перегрузки для std::equal, std::mismatch и std::is_permutation шаблоны функций, которые принимают две отдельные области значенийДа
C++ 2014-N3733Удаление std::gets от <cstdio>Да
C++ 2014-N3776Изменение формулировок для деструктора std::futureНовый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3779std::complex литералы, представляющие чистые мнимые числа с суффиксом i, if или ilДа
C++ 2014-N3781Использование одиночной кавычки в качестве диафрагмы цифр, например 1'000.Да
C++ 2014-N3786Запрещение «из воздуха» результатов в C++ 14Новый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3910Синхронизация поведения обработчиков сигналовНовый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3924Препятствующее использованию rand()Новый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.
C++ 2014-N3927Смертные приговоры без блокировкиНовый синтаксис/ключевое слово не вводится и поэтому не влияет на поддержку Polyspace для C++ 14.

См. также

Похожие темы