Udostępnij za pomocą


Błąd kompilatora C3499

parametr lambda, który został określony, aby typ zwracany pustki nie może zwrócić wartości

Uwagi

Kompilator generuje ten błąd, gdy wyrażenie lambda, które określa void jako typ zwraca wartość, lub gdy wyrażenie lambda zawiera więcej niż jedną instrukcję i zwraca wartość, ale nie określa jej zwracanego typu.

Aby poprawić ten błąd

  • Nie zwracaj wartości z wyrażenia lambda lub

  • Podaj typ zwracany wyrażenia lambda lub

  • Połącz instrukcje tworzące treść wyrażenia lambda w jedną instrukcję.

Example

Poniższy przykład generuje kod C3499, ponieważ treść wyrażenia lambda zawiera wiele instrukcji i zwraca wartość, ale wyrażenie lambda nie określa typu zwracanego:

// C3499a.cpp

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

W poniższym przykładzie przedstawiono dwie możliwe rozwiązania C3499. Pierwsza rozdzielczość zapewnia zwracany typ wyrażenia lambda. Druga rozdzielczość łączy instrukcje tworzące treść wyrażenia lambda w jedną instrukcję.

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

Zobacz też

Wyrażenia lambda