Поделиться через


/Zc:static_assert (Строгая обработка static_assert)

Параметр /Zc:static_assert компилятора сообщает компилятору оценивать static_assert вызовы с независимыми выражениями теста при анализе шаблонов классов или функций.

Синтаксис

/Zc:static_assert
/Zc:static_assert-

Замечания

Параметр /Zc:static_assert компилятора сообщает компилятору оценить static_assert текст шаблона функции или в тексте функции-члена класса при первом анализе, если выражение теста не зависит. Если независимое выражение теста не falseявляется, компилятор немедленно выдает ошибку. Если тестовое выражение зависит, static_assert он не вычисляется до создания экземпляра шаблона.

Этот /Zc:static_assert параметр доступен начиная с Visual Studio 2022 версии 17.1. В более ранних версиях Visual Studio или /Zc:static_assert- при указании Visual Studio не выполняет зависимый анализ, если static_assert он находится в теле шаблона функции или в теле функции-члена шаблона класса. Вместо этого он оценивается static_assert только при создании экземпляра шаблона.

Параметр /permissive- включает /Zc:static_assert, поэтому он включен по умолчанию в проектах, использующих /std:c++20 или /std:c++latest. Параметр /Zc:static_assert- должен прийти после /std:c++20параметра /std:c++latestили /permissive- параметра в командной строке.

Если компилятор находится в режиме C++14 по умолчанию и /permissive- указан или /Zc:static_assert указан, используется /Zc:static_assert поведение. Однако если он оценивается static_assert в тексте шаблона, он также сообщает о отключенном по умолчанию предупреждении C5254, "функция языка "terse static assert" требует флаг компилятора "/std:c++17", так как это поведение не требуется до C++17.

Установка параметра компилятора в Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Добавьте /Zc:static_assert или /Zc:static_assert- в область "Дополнительные параметры".

См. также

/Zc (Соответствие)