Compartilhar via


Erro do Compilador C3487

'return type': todas as expressões de retorno devem ser deduzidas para o mesmo tipo: anteriormente, ele era 'return type'

Um lambda deve especificar o respectivo tipo de retorno, a menos que contenha uma única instrução de retorno. Se um lambda contiver várias instruções de retorno, todas elas deverão ter o mesmo tipo.

Para corrigir este erro

  • Especifique um tipo de retorno à direita para o lambda. Verifique se todos os retornos do lambda são do mesmo tipo ou podem ser convertidos implicitamente no tipo de retorno.

Exemplo

O exemplo a seguir gera C3487 porque os tipos de retorno do lambda não correspondem:

// C3487.cpp
// Compile by using: cl /c /W4 C3487.cpp

int* test(int* pi) {
   // To fix the error, uncomment the trailing return type below
   auto odd_pointer = [=]() /* -> int* */ {
      if (*pi % 2)
         return pi;
      return nullptr; // C3487 - nullptr is not an int* type
   };
   return odd_pointer();
}

Confira também

Expressões Lambda