Condividi tramite


Errore del compilatore C3499

un'espressione lambda specificata in modo che il tipo restituito sia void non può restituire un valore

Il compilatore genera questo errore quando un'espressione lambda che specifica void come il tipo restituito restituisce un valore oppure quando un'espressione lambda contiene più di un'istruzione e restituisce un valore, ma non specifica il tipo restituito.

Per correggere l'errore

  • Non restituire un valore dall'espressione lambda, o

  • Fornire il tipo restituito dell'espressione lambda, o

  • Combinare le istruzioni che costituiscono il corpo dell'espressione lambda in una singola istruzione.

Esempi

L'esempio seguente genera un errore C3499 perché il corpo di un'espressione lambda contiene più istruzioni e restituisce un valore, ma l'espressione lambda non specifica il tipo restituito:

// C3499a.cpp

int main()
{
   [](int x) { int n = x * 2; return n; } (5); // C3499
}

L'esempio seguente illustra due possibili soluzioni all'errore C3499. La prima soluzione fornisce il tipo restituito dell'espressione lambda. La seconda soluzione combina le istruzioni che costituiscono il corpo dell'espressione lambda in una singola istruzione.

// 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);
}

Vedi anche

Espressioni lambda