Hirdetés
- Xiaomi 14 - párátlanul jó lehetne
- Samsung Galaxy A54 - türelemjáték
- Okosóra és okoskiegészítő topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Szerkesztett és makrofotók mobillal
- Android alkalmazások - szoftver kibeszélő topik
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- uleFone Power
- Google Pixel topik
Ú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!
- Melyik tápegységet vegyem?
- Egérpad topik
- Battlefield 6
- Black Friday november 29. / Cyber Monday december 2.
- Xiaomi 14 - párátlanul jó lehetne
- Nyíregyháza és környéke adok-veszek-beszélgetek
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- PlayStation 5
- Samsung Galaxy A54 - türelemjáték
- BestBuy topik
- További aktív témák...
- Apple iPhone 13 Pro Max 128GB,Újszerű,Dobozával,12 hónap garanciával
- Apple iPhone 14 128GB,Újszerű,Dobozával,12 hónap garanciával
- Samsung Galaxy Tab S6 Lite 64GB,Átlagos,Dobozával,12 hónap garanciával
- Apple Watch Ultra 2,Újszerű,Dobozával,12 hónap garanciával
- Nintendo switch oled, Új,Dobozával, 12 hónap garanciával
- Xiaomi 15 Ultra Silver Chrome 120 Hz WQHD+ LTPO AMOLED, Leica 1 + 200 MP periszkóp 16/512 GB
- Apple iPhone 15 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP Elitebook X360 1030 G2 - i5-7G I 8GB I 256SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- Eredeti DELL 240W töltők (LA240PM160)
- BESZÁMÍTÁS! MSI ThinA15 B7VF-449XHU Gamer notebook - R7 7735HS 16GB DDR5 1TB SSD nVidia RTX 4060 8GB
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


