Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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++20opçõ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:lambdaou/Zc:lambda-ao painel Opções adicionais:.
Confira também
/Zc (Conformidade)
/std (Especificar a versão padrão da linguagem)