Erreur du compilateur C3499
une expression lambda dont le type de retour spécifié est void ne peut pas retourner de valeur
Le compilateur génère cette erreur quand une expression lambda qui spécifie void
comme type de retour retourne une valeur, ou quand une expression lambda contient plusieurs instructions et retourne une valeur, mais ne spécifie pas son type de retour.
Pour corriger cette erreur
Ne retournez pas une valeur à partir de l’expression lambda ; ou
Fournissez le type de retour de l’expression lambda ; ou
Combinez les instructions qui composent le corps de l’expression lambda dans une instruction unique.
Exemples
L’exemple suivant génère l’erreur C3499, car le corps d’une expression lambda contient plusieurs instructions et retourne une valeur, mais l’expression lambda ne spécifie pas le type de retour :
// C3499a.cpp
int main()
{
[](int x) { int n = x * 2; return n; } (5); // C3499
}
L’exemple suivant montre deux résolutions possibles pour l’erreur C3499. La première résolution fournit le type de retour de l’expression lambda. La seconde résolution combine les instructions qui composent le corps de l’expression lambda dans une instruction unique.
// 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);
}