Kompilatorfel C3499

en lambda som har angetts för att ha en ogiltig returtyp kan inte returnera ett värde

Anmärkningar

Kompilatorn genererar det här felet när ett lambda-uttryck som anger void som returtyp returnerar ett värde, eller när ett lambda-uttryck innehåller mer än en instruktion och returnerar ett värde, men inte anger dess returtyp.

Så här åtgärdar du det här felet

  • Returnera inte ett värde från lambda-uttrycket, eller

  • Ange returtypen för lambda-uttrycket, eller

  • Kombinera de instruktioner som utgör lambda-uttryckets brödtext till en enda instruktion.

Example

I följande exempel genereras C3499 eftersom brödtexten i ett lambda-uttryck innehåller flera uttryck och returnerar ett värde, men lambda-uttrycket anger inte returtypen:

// C3499a.cpp

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

I följande exempel visas två möjliga lösningar på C3499. Den första upplösningen innehåller returtypen för lambda-uttrycket. Den andra lösningen kombinerar de instruktioner som utgör lambda-uttryckets brödtext till en enda instruktion.

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

Se även

Lambda-uttryck