lang:cpp:lambda
Compatibilité entre lambda et pointeur de fonction C
error: no viable conversion from '(lambda at file.cpp)' to 'void (*)(void *, const char *, const char *, uint32_t)' (aka 'void (*)(void *, const char *, const char *, unsigned int)')
Alors que la fonction lambda respecte bien la signature.
Pour être compatible:
- la lambda ne doit pas faire de capture,
- rajouter un
+
avant le[]
- on peut spécifier explicitement le type de retour pour être sûr.
2 solutions : forcer le type de retour et ne pas faire de captures (laisser vide entre les []
).
+[](void *, const char *, const char *, uint32_t) -> void{...}
lang/cpp/lambda.txt · Dernière modification : 2025/02/05 10:03 de root