Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um lambda que foi especificado para ter um tipo de retorno vazio não pode retornar um valor
Observações
O compilador gera esse erro quando uma expressão lambda que especifica void como o tipo de retorno retorna um valor, ou quando uma expressão lambda contém mais de uma instrução e retorna um valor, mas não especifica seu tipo de retorno.
Para corrigir este erro
Não retorne um valor da expressão lambda, ou
Forneça o tipo de retorno da expressão lambda, ou
Combine as instruções que compõem o corpo da expressão lambda numa única instrução.
Example
O exemplo a seguir gera C3499 porque o corpo de uma expressão lambda contém várias instruções e retorna um valor, mas a expressão lambda não especifica o tipo de retorno:
// C3499a.cpp
int main()
{
[](int x) { int n = x * 2; return n; } (5); // C3499
}
O exemplo a seguir mostra duas resoluções possíveis para C3499. A primeira resolução fornece o tipo de retorno da expressão lambda. A segunda resolução combina as declarações que compõem o corpo da expressão lambda em uma única declaração.
// C3499b.cpp
int main()
{
// Possible resolution 1:
// Provide the return type of the lambda expression.
[](int x) -> int { int n = x * 2; return n; } (5);
// Possible resolution 2:
// Combine the statements that make up the body of
// the lambda expression into a single statement.
[](int x) { return x * 2; } (5);
}