Compartilhar via


Erro do compilador C3499

um lambda que foi especificado para ter um tipo de retorno void não pode retornar um valor

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 o tipo de retorno desse valor.

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 em uma única instrução.

Exemplos

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 o erro C3499. A primeira resolução fornece o tipo de retorno da expressão lambda. A segunda resolução combina as instruções que compõem o corpo da expressão lambda em uma única instruçã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);
}

Confira também

Expressões Lambda