Hirdetés
- Samsung Galaxy A17 5G – megint 16
- Poco F8 Ultra – forrónaci
- Samsung Galaxy Watch5 Pro - kerek, de nem tekerek
- Örömkönnyek és üres kezek a TriFold startjánál
- Milyen robotporszívót vegyek karácsonyra? (2025)
- Töltő már van a Galaxy S26 Ultrához
- Milyen okostelefont vegyek?
- Bekerül az Apple Pay és Google Pay a Budapest GO alkalmazásba
- Samsung Galaxy Watch8 - Classic - Ultra 2025
- Vivo X300 - kicsiben jobban megéri
Ú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!
- Chieftec-Prohardver nyereményjáték
- Milyen monitort vegyek?
- GL.iNet Flint 2 (GL-MT6000) router
- One otthoni szolgáltatások (TV, internet, telefon)
- PlayStation 5
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Apple asztali gépek
- urandom0: Száműztem az AI-t az életemből
- Kertészet, mezőgazdaság topik
- Milyen processzort vegyek?
- További aktív témák...
- GYÖNYÖRŰ iPhone 12 mini 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3878
- Honor 90 512GB, Kártyafüggetlen, 1 Év Garanciával
- Dell Latitude 7390 13,3" FHD IPS, i5-i7, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- GYÖNYÖRŰ iPhone 15 Plus 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3355, 100% Akkumulátor
- AKCIÓ! Törött Apple iMac 19.2 i5-8500 Radeon Pro 560X 4GB 16GB 256GB SSD 21.5" 4K Retina
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest


