/Zc:static_assert
(control static_assert estricto)
La opción /Zc:static_assert
del compilador indica al compilador que evalúe las llamadas static_assert
con expresiones de prueba no dependientes cuando se analicen las plantillas de clase o función.
Sintaxis
/Zc:static_assert
/Zc:static_assert-
Comentarios
La opción del compilador /Zc:static_assert
indica al compilador que evalúe un elemento static_assert
en el cuerpo de una plantilla de función o en el cuerpo de una función miembro de plantilla de clase cuando se analice por primera vez, si la expresión de prueba no es dependiente. Si la expresión de prueba no dependiente no es false
, el compilador emite un error de forma inmediata. Cuando la expresión de prueba es dependiente, static_assert
no se evalúa hasta que se crea una instancia de la plantilla.
La opción /Zc:static_assert
está disponible a partir de la versión 17.1 de Visual Studio 2022. En versiones anteriores de Visual Studio, o si se especifica /Zc:static_assert-
, Visual Studio no realiza análisis dependientes si static_assert
está en el cuerpo de una plantilla de función o en el cuerpo de una función miembro de una plantilla de clase. En su lugar, solo evalúa static_assert
cuando se crea una instancia de una plantilla.
La opción /permissive-
habilita /Zc:static_assert
, por lo que está activada de forma predeterminada en los proyectos que usan /std:c++20
o /std:c++latest
. La opción /Zc:static_assert-
debe aparecer después de una opción /std:c++20
, /std:c++latest
o /permissive-
en la línea de comandos.
Si el compilador está en el modo de C++14 predeterminado y se especifica /permissive-
o /Zc:static_assert
, usa el comportamiento /Zc:static_assert
. Sin embargo, si evalúa un elemento static_assert
en un cuerpo de plantilla, también notifica una advertencia de desactivado de forma predeterminada C5254, "la característica de lenguaje 'terse static assert' requiere la marca de compilador '/std:c++17
'", ya que este comportamiento no se requiere hasta C++17.
Para establecer esta opción del compilador en Visual Studio
Abra el cuadro de diálogo Páginas de propiedades del proyecto. Para más información, vea Establecimiento del compilador de C++ y de propiedades de compilación en Visual Studio.
Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.
Agregue
/Zc:static_assert
o/Zc:static_assert-
al panel Opciones adicionales.