/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
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.
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)