Outils pour utilisateurs

Outils du site


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:

  1. la lambda ne doit pas faire de capture,
  2. rajouter un + avant le []
  3. 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