Sdílet prostřednictvím


Chyba kompilátoru C3487

'return type': všechny návratové výrazy musí být odstraněny na stejný typ: dříve se jednalo o návratový typ.

Poznámky

Lambda musí zadat svůj návratový typ, pokud neobsahuje jediný návratový příkaz. Pokud lambda obsahuje více návratových příkazů, musí mít všechny stejný typ.

Oprava této chyby

  • Zadejte koncový návratový typ lambda. Ověřte, že všechny návraty z lambda jsou stejného typu nebo lze implicitně převést na návratový typ.

Příklad

Následující příklad generuje C3487, protože návratové typy lambda se neshodují:

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

Viz také

Výrazy lambda