/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
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Добавьте
/Zc:static_assert
или/Zc:static_assert-
в область "Дополнительные параметры".