Udostępnij za pomocą


Błąd kompilatora C3487

"zwracany typ": wszystkie wyrażenia zwracane muszą być wywoływane do tego samego typu: wcześniej był to "typ zwracany"

Uwagi

Lambda musi określić jego typ zwracany, chyba że zawiera pojedynczą instrukcję return. Jeśli lambda zawiera wiele instrukcji zwracanych, muszą mieć ten sam typ.

Aby poprawić ten błąd

  • Określ końcowy typ zwracany dla lambda. Sprawdź, czy wszystkie zwroty z lambda są tego samego typu lub mogą być niejawnie konwertowane na typ zwracany.

Przykład

Poniższy przykład generuje C3487, ponieważ zwracane typy lambda nie są zgodne:

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

Zobacz też

Wyrażenia lambda