Size: a a a

2020 July 25

IL

Ignat Loskutov in pro.cxx
ну сишные апи иногда предоставляют сигнатуры вида void foo(some_type (*callback)(params, void*), void *opaque), тогда через этот opaque можно прокинуть стейт
источник

IL

Ignat Loskutov in pro.cxx
если такого нет, то остаётся только страдать, конечно
источник

VO

Vyacheslav Olkhovche... in pro.cxx
только под каждый стейт писать свою функцию-обертку
источник

d

dekabr in pro.cxx
Ignat Loskutov
если такого нет, то остаётся только страдать, конечно
в моем случае видимо страдать
источник

d

dekabr in pro.cxx
Vyacheslav Olkhovchenkov
только под каждый стейт писать свою функцию-обертку
это звучит лучше чем страдание
можно немного подробнее?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
так это тоже самое страдание только в профиль
источник

VO

Vyacheslav Olkhovche... in pro.cxx
пишешь обычную функцию, внутри ней выщываешь сохраненую лямбду
источник

VO

Vyacheslav Olkhovche... in pro.cxx
лямбда сохраняется в какой-нибудь внешней переменной.
источник

VO

Vyacheslav Olkhovche... in pro.cxx
зачем это надо кроме как пострадать -- ну хз.
источник

d

dekabr in pro.cxx
а...
действительно то же самое но в профиль
источник

AD

Apache DOG™ in pro.cxx
Phil Yar
Smart pointers. А то в куче память самому освобождать надо
А то существует возможность это не сделать
источник

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Apache DOG™
Тут мне подкинули один интересный вопрос, что завтипы(тип зависящий от значения) в С++ невозможны в принципе, однако, сдаётся мне что принципиальная возможность сделать завтип всё же есть, ну хотя бы например такой: forall i: usigned int, int[i], однако чтобы заставить это работать, каждый раз нужно перекомпилировать исходный код с "завтипами" и подсоединять к работающему приложению. Куда смотреть чтобы такое наколдовать?
Оборачивать все в тип+предикат. Разница с настоящими завтипами будет в том, что для проверки программы без ее запуска нужен будет какой-то внешний тулинг
источник

v

vehlwn in pro.cxx
dekabr
Здравствуйте
Это безусловно ужасная идея, но есть же способ получить указатель на функцию, реализующую оператор () у лямбды?
https://github.com/Toxa-man/CallbackConnector
Вопрос не в этот чат.
источник

d

dekabr in pro.cxx
А куда с таким, в @supapro?

На гите вещь действительно интересная, вот только у моего коллбэка другая сигнатура

Совсем другая

LRESULT CALLBACK WindowProc(HWND   hwnd, UINT   uMsg, WPARAM wParam, LPARAM lParam );

Проблема не совсем в лямбдах даже, мне бы просто скормить в качестве колбэка что-нибудь, откуда можно получить доступ к конкретному this без глобальных переменных
источник

v

vehlwn in pro.cxx
dekabr
А куда с таким, в @supapro?

На гите вещь действительно интересная, вот только у моего коллбэка другая сигнатура

Совсем другая

LRESULT CALLBACK WindowProc(HWND   hwnd, UINT   uMsg, WPARAM wParam, LPARAM lParam );

Проблема не совсем в лямбдах даже, мне бы просто скормить в качестве колбэка что-нибудь, откуда можно получить доступ к конкретному this без глобальных переменных
Зачем конвертировать лямблию в указатель на сишную функцию с другой сигнатурой?
источник

d

dekabr in pro.cxx
Нет, лямбда с аналогичной
Она просто с захватом
источник

d

dekabr in pro.cxx
С другой это не с той, что предлагается на гитхабе
источник

v

vehlwn in pro.cxx
Что значит "что-нибудь откуда можно получить доступ к this"? Все сишное апи рядом с калбаком принимает void* с данными.
источник

v

vehlwn in pro.cxx
dekabr
С другой это не с той, что предлагается на гитхабе
Там вообщето шаблоны и ты можешь вставить любой тип.
источник

d

dekabr in pro.cxx
Я попробую
источник