Size: a a a

2020 December 14

СЧ

Сергей Чурмин... in pro.cxx
Побитый Кирпич
Лучше покажи кодом
щя gist соберу
источник

h

hazer_hazer in pro.cxx
Побитый Кирпич
Лучше сделать any_function на type erasure тогда уж
Ну я бы вообще лучше делал constraint'ами листенеры на плюсах. Но на плюсах ивенты сложные ни разу не реализовывал, так что мб есть решения получше
источник

VS

Vlad Serebrennikov in pro.cxx
Vlad Serebrennikov
он сразу пишет, что в
std::invoke(std::boolalpha, std::cout);
we are attempting to form a pointer to std::boolalpha

но я не нахожу этому подтверждений

std::invoke определен через INVOKE, который определен и для случая, когда передается не указатель на функцию, то есть function-to-pointer преобразование не требуется. есть еще косвенный аргумент, который полагается на качество реализации, что std::is_pointer_v<decltype(f)> == false.

что касается std::bind, то там за несколько шагов дело доходит до function object type, и function-to-pointer преобразование действительно требуется, поэтому я не прав и передавать ему неадресуемые функции нельзя
есть, правда, dcl.meaning#dcl.fct-5, из-за которого std::invoke должен будет принимать указатель, если передать ему именно функцию
источник

АК

Александр Караев... in pro.cxx
Vlad Serebrennikov
есть, правда, dcl.meaning#dcl.fct-5, из-за которого std::invoke должен будет принимать указатель, если передать ему именно функцию
так это ведь логично - если мы передаём некий f в аргумент, то это уже не какая-то из перегрузок, а вполне конкретная функция
иначе говоря, не существует способа передать функцию через аргументы, кроме как через указатель на неё (функторы не считаются)
источник

СЧ

Сергей Чурмин... in pro.cxx
Побитый Кирпич
Лучше покажи кодом
источник

ПК

Побитый Кирпич... in pro.cxx
У тебя action только логируется, я так и не понял что ты хочешь сделать
источник

СЧ

Сергей Чурмин... in pro.cxx
Побитый Кирпич
У тебя action только логируется, я так и не понял что ты хочешь сделать
Я хотел бы избавится от огромной функции с кейсом и передавать функции которую надо вызвать в случае успеха или не успеха
источник

ПК

Побитый Кирпич... in pro.cxx
Сергей Чурмин
Я хотел бы избавится от огромной функции с кейсом и передавать функции которую надо вызвать в случае успеха или не успеха
Ну дак передавай с фиксированной сигнатурой
источник

ПК

Побитый Кирпич... in pro.cxx
Что значит "неявная сигнатура"?
источник

СЧ

Сергей Чурмин... in pro.cxx
Ну если бы это был питон то как то так
def request (SQLString, callbackSucc, callBackError)
что то на подобие
источник

СЧ

Сергей Чурмин... in pro.cxx
Побитый Кирпич
Что значит "неявная сигнатура"?
да я вот чой то над этой своей фразой думаю, и понимаю что наш сеньер чой то не то буробит
источник

ПК

Побитый Кирпич... in pro.cxx
Сергей Чурмин
Ну если бы это был питон то как то так
def request (SQLString, callbackSucc, callBackError)
что то на подобие
В С++ как то так:
using CallbackSuccess = std::function<void(const Response& response)>;
using CallbackError = std::function<void(const QString& errorMsg)>;

void request(const QString& str, const CallbackSuccess& suc, const CallbackError& err);
источник

СЧ

Сергей Чурмин... in pro.cxx
Побитый Кирпич
В С++ как то так:
using CallbackSuccess = std::function<void(const Response& response)>;
using CallbackError = std::function<void(const QString& errorMsg)>;

void request(const QString& str, const CallbackSuccess& suc, const CallbackError& err);
мерси
источник

bt

baby tonight in pro.cxx
куда можно обратиться по работе с либами ffmpeg?
источник

s

std::slavik in pro.cxx
baby tonight
куда можно обратиться по работе с либами ffmpeg?
источник

O

Ofee in pro.cxx
Vlad Serebrennikov
он сразу пишет, что в
std::invoke(std::boolalpha, std::cout);
we are attempting to form a pointer to std::boolalpha

но я не нахожу этому подтверждений

std::invoke определен через INVOKE, который определен и для случая, когда передается не указатель на функцию, то есть function-to-pointer преобразование не требуется. есть еще косвенный аргумент, который полагается на качество реализации, что std::is_pointer_v<decltype(f)> == false.

что касается std::bind, то там за несколько шагов дело доходит до function object type, и function-to-pointer преобразование действительно требуется, поэтому я не прав и передавать ему неадресуемые функции нельзя
В [func.invoke] определена точная сигнатура std::invoke, первый аргумент принимается по forwarding-reference. Полагаю, чтобы принять аргумент таким образом (т.е. по ссылке), аргумент должен быть адресуемым, а стандартные функции в основной своей массе таковыми не являются. Так что проблема не в самом invoke, а в способе передать ему аргумент

Аналогичная ситуация с std::bind

Они оба будут корректно работать в соответствии со всеми требованиями, если мы сумеем сформировать ссылку на функцию. А в общем случае для стандартных функций мы этого сделать не можем
источник

A

Assasin in pro.cxx
Никто не в курсе, модули в gcc 11 попадают?
источник

i

incraft3d in pro.cxx
У ютуба и гугла сбой
источник

ПК

Побитый Кирпич... in pro.cxx
incraft3d
У ютуба и гугла сбой
Не надо было на Go переписывать, чтд
источник

IZ

Ilia Zviagin in pro.cxx
incraft3d
У ютуба и гугла сбой
Да, есть такое...
источник