d
Size: a a a
d
VS
O
O
VS
O
std::bind
, std::transform
всё же некорректно использовать с non-addresable function. И проблема здесь вовсе не в std::bind
или std::transform
, а в том, что мы не можем передать первый аргумент, поскольку это требует взять его адрес в процессе передачи по ссылкеKt
СЧ
AT
void (*)()
и передавать.СЧ
void (*)()
и передавать.void foo(QString args, ???someFoo???)
AT
void foo(QString args, ???someFoo???)
void foo(QString args, void (*fp)())
СЧ
void foo(QString args, void (*fp)())
ПК
AT
h
arguments
достаешьVS
std::bind
, std::transform
всё же некорректно использовать с non-addresable function. И проблема здесь вовсе не в std::bind
или std::transform
, а в том, что мы не можем передать первый аргумент, поскольку это требует взять его адрес в процессе передачи по ссылкеstd::invoke(std::boolalpha, std::cout);
std::invoke
определен через INVOKE
, который определен и для случая, когда передается не указатель на функцию, то есть function-to-pointer преобразование не требуется. есть еще косвенный аргумент, который полагается на качество реализации, что std::is_pointer_v<decltype(f)> == false
.std::bind
, то там за несколько шагов дело доходит до function object type, и function-to-pointer преобразование действительно требуется, поэтому я не прав и передавать ему неадресуемые функции нельзяСЧ
void request(QString SQLString, QString action);сейчас как это работает отправляется сигнал со стройкой SQL и меткой, Db обрабатывается ответ, и отправляет его с меткой, функция приемник через обычный свич смотрит метку и уже понимает что делать с ответом, все вроде нечего но функция приемник уже выросла неимоверно и хочется сразу бросать калбэк, вот не разу с ними не работал, хочется разобратся
h
void request(QString SQLString, QString action);сейчас как это работает отправляется сигнал со стройкой SQL и меткой, Db обрабатывается ответ, и отправляет его с меткой, функция приемник через обычный свич смотрит метку и уже понимает что делать с ответом, все вроде нечего но функция приемник уже выросла неимоверно и хочется сразу бросать калбэк, вот не разу с ними не работал, хочется разобратся
Any
ПК
void request(QString SQLString, QString action);сейчас как это работает отправляется сигнал со стройкой SQL и меткой, Db обрабатывается ответ, и отправляет его с меткой, функция приемник через обычный свич смотрит метку и уже понимает что делать с ответом, все вроде нечего но функция приемник уже выросла неимоверно и хочется сразу бросать калбэк, вот не разу с ними не работал, хочется разобратся
ПК
Any
any_function
на type erasure тогда уж