/Zc:lambda
(Habilitación del procesador lambda actualizado)
La opción del compilador /Zc:lambda
habilita la compatibilidad con la gramática lambda y el procesamiento.
Sintaxis
/Zc:lambda
[-
]
Comentarios
La opción del compilador /Zc:lambda
habilita el procesador lambda conforme. Analiza e implementa código lambda según el estándar de C++. Esta opción está desactivada de forma predeterminada, que usa el procesador lambda heredado. Use esta opción para habilitar comprobaciones de sintaxis en modo de conformidad de expresiones lambda genéricas cuando se usan las opciones predeterminadas /std:c++14
o /std:c++17
del compilador.
/Zc:lambda
se habilita automáticamente mediante las /std:c++20
opciones , [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
y /experimental:module
. Puede deshabilitarlo explícitamente mediante /Zc:lambda-
.
La opción /Zc:lambda
está disponible a partir de la versión 16.8 de Visual Studio 2019. Está disponible como /experimental:newLambdaProcessor
partir de la versión 16.3 de Visual Studio 2019, pero esta ortografía ya está en desuso.
El procesador lambda heredado tiene limitaciones cuando analiza y compila lambdas. Por ejemplo, este código conforme se compila correctamente en /Zc:lambda
, pero notifica errores en /Zc:lambda-
:
void f1()
{
constexpr auto c_value = 1;
auto func = []()
{
return c_value; // error C3493: 'c_value' cannot be implicitly captured
// because no default capture mode has been specified
};
func(); // error C2064: term does not evaluate to a function taking 0 arguments
}
El procesador lambda heredado compila este ejemplo sin advertencias, pero el nuevo procesador lambda genera el error C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
En el siguiente ejemplo se muestra la sintaxis correcta, que ahora aplica el compilador en /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
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:lambda
o/Zc:lambda-
al panel Opciones adicionales.
Consulte también
/Zc
(Conformidad)
/std
(Especificar la versión estándar del lenguaje)