/Zc:lambda
(habilitar processador lambda atualizado)
A opção do compilador /Zc:lambda
habilita o suporte ao processamento e à gramática lambda em conformidade.
Sintaxe
/Zc:lambda
[-
]
Comentários
A opção do compilador /Zc:lambda
habilita o processador lambda em conformidade. Analisa e implementa o código lambda de acordo com o padrão C++. Essa opção está desativada por padrão, que usa o processador lambda herdado. Use essa opção para habilitar verificações de sintaxe no modo de conformidade de lambdas genéricos ao usar as opções do compilador /std:c++14
padrão ou /std:c++17
.
/Zc:lambda
é ativado automaticamente pelas /std:c++20
opções , [/std:c++latest
] (std-specify-language-standard-version.md), /permissive-
e /experimental:module
. Você pode desabilitá-lo explicitamente usando /Zc:lambda-
.
A opção /Zc:lambda
está disponível a partir do Visual Studio 2019 versão 16.8. Está disponível como /experimental:newLambdaProcessor
a partir do Visual Studio 2019 versão 16.3, mas essa ortografia agora está preterida.
O processador lambda herdado tem limitações quando analisa e compila lambdas. Por exemplo, esse código em conformidade é compilado corretamente em /Zc:lambda
, mas relata erros em /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
}
O processador lambda herdado compila esse código sem avisos, mas o novo processador lambda produz o erro C2760:
void f2() {
auto a = [](auto arg) {
decltype(arg)::Type t; // C2760 syntax error: unexpected token 'identifier', expected ';'
};
}
O exemplo mostra a sintaxe correta, agora imposta pelo compilador em /Zc:lambda
:
void f3() {
auto a = [](auto arg) {
typename decltype(arg)::Type t;
};
}
Para definir essa opção do compilador no Visual Studio
Abra a caixa de diálogo Páginas de Propriedades do projeto. Para obter detalhes, confira Definir as propriedades de build e do compilador do C++ no Visual Studio.
Selecione a página de propriedades Propriedades de Configuração>C/C++>Linha de Comando.
Adicione
/Zc:lambda
ou/Zc:lambda-
ao painel Opções adicionais:.
Confira também
/Zc
(Conformidade)
/std
(Especificar a versão padrão da linguagem)