Megosztás a következőn keresztül:


C3499-et eredményező fordítóhiba

az érvénytelen visszatérési típushoz megadott lambda nem tud értéket visszaadni

Megjegyzések

A fordító akkor hozza létre ezt a hibát, ha egy visszatérési típusként megadott lambdakifejezés egy értéket ad void vissza, vagy ha egy lambda kifejezés több utasítást tartalmaz, és egy értéket ad vissza, de nem adja meg a visszatérési típusát.

A hiba kijavítása

  • Ne adjon vissza értéket a lambda kifejezésből, vagy

  • Adja meg a lambda kifejezés visszatérési típusát, vagy

  • Egyesítse a lambda kifejezés törzsét alkotó utasításokat egyetlen utasításba.

Example

Az alábbi példa C3499-et hoz létre, mivel egy lambda kifejezés törzse több utasítást tartalmaz, és egy értéket ad vissza, de a lambda kifejezés nem adja meg a visszatérési típust:

// C3499a.cpp

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

Az alábbi példa két lehetséges megoldást mutat be a C3499-nek. Az első felbontás a lambda kifejezés visszatérési típusát adja meg. A második megoldás egyetlen utasítássá alakítja a lambda kifejezés törzsét alkotó utasításokat.

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

Lásd még

Lambda-kifejezések