Size: a a a

2020 August 12

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Нашел, что C++ способ передачи функцию это через шаблон T и аргумент T&&
А как тут явно указать аргументы/возврат ?
Переформулируй вопрос
источник

VS

Vladimir Suisei in supapro.cxx
template<typename T>
void foo(T&& lambda) { lambda(); }
источник

AP

Alexander Potapov in supapro.cxx
Alexander Potapov
decltype(auto)
_
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
template<typename T>
void foo(T&& lambda) { lambda(); }
Так, и чо?
источник

VS

Vladimir Suisei in supapro.cxx
Как явно указать клиенту с какой функцией работает код
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Как явно указать клиенту с какой функцией работает код
Чего?
источник

VS

Vladimir Suisei in supapro.cxx
Что например принимает int, возвращает char
источник

AP

Alexander Potapov in supapro.cxx
Так это кажется мой вопрос старый
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Что например принимает int, возвращает char
У тебя foo принимает T&&, какой ещё int/char?
источник

VS

Vladimir Suisei in supapro.cxx
В си я передаю указатель на функцию и там виден тип аргументов и возвращаемое
источник

AK

Anton Kviatkovskii in supapro.cxx
Vladimir Suisei
Как явно указать клиенту с какой функцией работает код
void foo(std::function<int(double)> func);
источник

AP

Alexander Potapov in supapro.cxx
static_assert(std::is_same_v<decltype(std::function{ lambda}) , std::function<int(char)>>)
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
В си я передаю указатель на функцию и там виден тип аргументов и возвращаемое
Ты в коде выше указал сам, что lambda ничего не принимает
источник

AK

Anton Kviatkovskii in supapro.cxx
Вообще не понятно зачем прокидывать callable через T если тебе нужно конкретно знать тип аргументов и возврата
источник

VS

Vladimir Suisei in supapro.cxx
Побитый Кирпич
Ты в коде выше указал сам, что lambda ничего не принимает
Ну это я для примера. Клиент не должен копать исходный код либы чтобы узнать какая функция ожидается
источник

SH

Serhii Herashchenko in supapro.cxx
Vladimir Suisei
В си я передаю указатель на функцию и там виден тип аргументов и возвращаемое
Какой стандарт?
источник

AK

Anton Kviatkovskii in supapro.cxx
Vladimir Suisei
Ну это я для примера. Клиент не должен копать исходный код либы чтобы узнать какая функция ожидается
Дак сделай просто std::function то
источник

AK

Anton Kviatkovskii in supapro.cxx
Зачем тебе шаблон?
источник

VS

Vladimir Suisei in supapro.cxx
Anton Kviatkovskii
Дак сделай просто std::function то
Сделаю, спасибо что понял
источник

ПК

Побитый Кирпич... in supapro.cxx
Vladimir Suisei
Ну это я для примера. Клиент не должен копать исходный код либы чтобы узнать какая функция ожидается
До С++20 это описывается в виде документации и Named Requirements, после С++20 это описывается концептами
источник