С агентами EIFFEL (https://www.eiffel.org/doc/solutions/Event_Programming_with_Agents#Open_and_Closed_Arguments) каждый имеет открытый и закрытый аргументы. Для меня это похоже на аргументы и захваты в лямбдах.
Интересно, могу ли я «закрыть / захватить» открытый аргумент лабды, чтобы получить новую лямбду с другой сигнатурой с меньшим количеством аргументов.
Примерно так:
std::function<void(int, float, string) baseLambda = [](int d, float f, string s){printf("%d%f%s",d,f,s.c_str())};
std::function<void(int,string)> partiallyClosedLambda = baseLambda(?, 1.0f, ?);
partiallyClosedLambda(3,"foo"); // would print "31.0foo"
Есть ли такой механизм в c ++?
конечно, я мог бы определить новую лямбду вручную
std::function<void(int,string)> partiallyClosedLambda = [&baseLambda](int d, string s) { baseLambda(d, 1.0f, s); }
Но мне интересно, есть ли какой-нибудь синтаксис c сахара для этого?