Compartir vía


/Zc:templateScope (Comprobar sombra de parámetros de plantilla)

La /Zc:templateScope opción del compilador habilita comprobaciones del comportamiento estándar de C++ en torno al sombreado de parámetros de plantilla.

Sintaxis

/Zc:templateScope[-]

Comentarios

El estándar de C++ no permite la reutilización del nombre de un parámetro de plantilla (o sombra) para otra declaración dentro del ámbito de la plantilla. La /Zc:templateScope opción del compilador habilita una comprobación de errores para este sombreado.

La /Zc:templateScope opción es nueva en la versión preliminar 17.5 de Visual Studio 2022. La opción está desactivada de forma predeterminada incluso cuando el código se compila mediante la /permissive- opción (o una opción que implica /permissive-, como /std:c++20 o /std:c++latest). Para habilitar la comprobación de errores, debe agregar /Zc:templateScope explícitamente a la línea de comandos del compilador. Para deshabilitar explícitamente la comprobación, use la /Zc:templateScope- opción .

Ejemplo

En /Zc:templateScope, este código de ejemplo genera un error:

template<typename T>
void f(T&& t) {
    int T = 13;
}

/* Output:
t.cpp(3): error C7527: 'T': a template parameter name cannot be reused within its scope
*/

Para establecer esta opción del compilador en Visual Studio

  1. 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.

  2. Seleccione la página de propiedades Propiedades de configuración>C/C++>Línea de comandos.

  3. En Opciones adicionales, agregue /Zc:templateScope o /Zc:templateScope-. Haga clic en Aceptar o en Aplicar para guardar los cambios.

Consulte también

/Zc (Conformidad)
/permissive-
/std (Especificar la versión estándar del lenguaje)