Hirdetés
Új hozzászólás Aktív témák
-
jattila48
aktív tag
válasz
dobragab #4087 üzenetére
Köszi szépen a válaszodat. Először is engedd meg, hogy egy hibát javítsak:
static RET fptr_handler(ARGS... args)
{
tl_function(std::forward<ARGS>(args)...);
}helyesen:
static RET fptr_handler(ARGS... args)
{
return tl_function(std::forward<ARGS>(args)...);
}Egyébként szép megoldás a problémára.
Lényegében hasonló, mint amit a szimulációban írtam. Ott globálisan hoztam létre az objektumokat, ezek tfv.-eit pedig free wrapper fv.-eken keresztül hívtam meg (amik a globális objektumokhoz hozzáférnek), és a free fv.-ekre mutató fv. pointert tudom aztán használni callback fv. pointerként.
Lényegében a te megoldásod is hasonló, csak nem globális, hanem (thread_local) static std::function objecteket hozol létre (tl_function), amik tartalmazzák az objektum címét (ez a lambdában kapturált argumentum), és a megfelelő tfv. pointert. Majd ezt a tl_function std::function objectet meghívó fptr_handler statikus wrapper tfv.-nek a címét (mint közönséges pattintott C fv. pointert) adod vissza. A trükk pedig az, hogy a to_fptr function template második argumentuma egy []{} dummy lambda, aminek a típusa mindíg (fordító által generált) egyedi típus, ezért a to_fptr_t class template minden egyes alkalomkor külön-külön példányosul (a dummy lambda aktuális típusával), minden egyes function object-re külön osztályt, és azzal külön fptr_handler fv.-t létrehozva. Szép megoldás, gratula!
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- OLED TV topic
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Star Wars: The Old Republic - MMORPG
- 5.1, 7.1 és gamer fejhallgatók
- Hobby elektronika
- AliExpress tapasztalatok
- Jövedelem
- Azonnali alaplapos kérdések órája
- Házimozi haladó szinten
- One otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- Ps4 PRO CUH-7216B+2db kontroller
- HP Victus 16 garanciás gamer laptop
- Minis Forum Mini PC MS-A2 Ryzen 9955HX RAM és SSD nélkül 1 év garanciával
- Gamer PC i5-14400F + RX 9060 XT 16 GB, 32GB RAM, 1TB SSD Székesfehérvár, GARANCIÁS, AZONNAL!
- Huawei Watch 5 42mm Sand Gold 904L Steel // 'Aranyló homok' rozsdamentes acél
- Xiaomi 15 256GB, Kártyafüggetlen, 1 Év Garanciával
- Dell Latitude 5530 i7-1255U 16GB 512GB 15.6" FHD TouchScreen Nagyakksis! 1 év teljeskörű garancia!
- Újra Akcióban!!! Ducky One 2 Mini és SF billentyűzetek a bolti ár töredékéért! Számla+Gari
- Magyarország piacvezető szoftver webáruháza
- RAKTÁRKISÖPRÉS! Eladó szerverek!
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest