Здравствуйте. Возникла довольно тривиальная задача, но никак не могу подобрать нужный и легковесный синтаксис для ее решения.
Допустим, у нас есть некоторый объект, у которого есть оператор () с какими-то аргументами или без них. Это может быть лямбда, bind или что-то пользовательское.
auto fnc = [](int x){return x * x;};
Например, такой. Мне нужно написать универсальную функцию, которая будет принимать на вход любой подобный функтор и выдавать на выход функтор с подобной сигнатурой вызова, но который будет делать нечто (не важно что) с переданным на вход функтором. То есть:
auto wrap_fnc = wrap(fnc);
wrap_fnc(5);
Например, эта функция будет генерить функтор-обертку, который будет класть исходный функтор в список, прибиндив к нему те аргументы, которые были переданы при вызове обертки:
Здравствуйте, Went, Вы писали:
W>Здравствуйте. Возникла довольно тривиальная задача, но никак не могу подобрать нужный и легковесный синтаксис для ее решения. W>Допустим, у нас есть некоторый объект, у которого есть оператор () с какими-то аргументами или без них. Это может быть лямбда, bind или что-то пользовательское. W>Кручу-верчу, но никак не могу определиться даже с тем, каким шаблоном должна быть функция wrap.
не совсем понятно что нужно.
пример использования есть?
Здравствуйте, Went, Вы писали:
W>Например, такой. Мне нужно написать универсальную функцию, которая будет принимать на вход любой подобный функтор и выдавать на выход функтор с подобной сигнатурой вызова, но который будет делать нечто
Не уверен, но похоже на функциональную композицию. Попробуй на эту тему погуглить
Re[3]: Как обернуть произвольный функтор на С++11?
Здравствуйте, Evgeny.Panasyuk, Вы писали: EP>>А, C++11 — тогда для вывода типа результата trailing decltype, а полиморфную лямбду расписать вручную.
Спасибо, похоже, что оно!
Re[2]: Как обернуть произвольный функтор на С++11?
Здравствуйте, Voivoid, Вы писали:
V>Здравствуйте, Went, Вы писали:
W>>Например, такой. Мне нужно написать универсальную функцию, которая будет принимать на вход любой подобный функтор и выдавать на выход функтор с подобной сигнатурой вызова, но который будет делать нечто V>Не уверен, но похоже на функциональную композицию. Попробуй на эту тему погуглить
Простите, не совсем понял как теоритический материал поможет мне с тонкостями синтаксиса
Re[3]: Как обернуть произвольный функтор на С++11?
Здравствуйте, Went, Вы писали:
W>Здравствуйте, Voivoid, Вы писали:
V>>Здравствуйте, Went, Вы писали:
W>>>Например, такой. Мне нужно написать универсальную функцию, которая будет принимать на вход любой подобный функтор и выдавать на выход функтор с подобной сигнатурой вызова, но который будет делать нечто V>>Не уверен, но похоже на функциональную композицию. Попробуй на эту тему погуглить W>Простите, не совсем понял как теоритический материал поможет мне с тонкостями синтаксиса