Konverzia std::functiohn na function pointer

Konverzia std::functiohn na function pointer
« kdy: 21. 06. 2021, 19:00:23 »
Ahojte dá sa nejako skonvertovať?

Kód: [Vybrat]
using HttpCallback = std::function<void(HTTPRequest*, HTTPResponse*)>
Kód: [Vybrat]
using HttpCallbackPtr = void(*)(HTTPRequest*, HTTPResponse*)
Potreboval by som použiť lambdu na mieste kde sa dá použiť len klasická funkcia. Objavil som síce spôsob ako to skonvertovať cez std::function.target<>, ale ten by mal fungovať len so zapnutým RTTI, lenže zo zapnutým RTTI, mi zaser linker hádže chybu ako som uviedol v predchádzajúcom diskusnom threade: https://forum.root.cz/index.php?topic=24918.0

Takže by som potreboval buď rozbehnúť kompiláciu s RTTI, alebo nájsť iný spôsob ako skonvertovať std::function

Tuná je úrivok kódu:

Kód: [Vybrat]
using HttpCallbackPtr = void(*)(HTTPRequest*, HTTPResponse*);
using HttpCallback = std::function<void(HTTPRequest*, HTTPResponse*)>;

void registerRoutes()
{
    HttpCallback httpCallback = [](HTTPRequest* request, HTTPResponse* response) -> void {

    };

    auto callbackPtr = httpCallback.target<HttpCallbackPtr>();
    server->registerNode(new ResourceNode("/", "GET", *callbackPtr));


olok

Re:Konverzia std::functiohn na function pointer
« Odpověď #1 kdy: 21. 06. 2021, 21:53:18 »
Kód: [Vybrat]
void registerRoutes()
{
    auto httpCallback = [](HTTPRequest* request, HTTPResponse* response) -> void {

    };

    server->registerNode(new ResourceNode("/", "GET", httpCallback));

Idris

  • *****
  • 1 660
    • Zobrazit profil
    • E-mail
Re:Konverzia std::functiohn na function pointer
« Odpověď #2 kdy: 22. 06. 2021, 01:07:27 »
Tohle dělá překladač automaticky, když je lambda non-capturing.