exponenta event banner

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

В этой таблице представлен частичный список элементов языка 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Автоматическое вычитание типа возврата для функций, для которых не указан явный тип возврата

Да.

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

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

Да.

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

C++ 2014-N3649

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

  • Используя auto спецификатор типа для параметра и возвращаемого типа

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

Да
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.

См. также

Связанные темы