Учитывая boost::bind
или std::
эквивалентов, я могу сделать это:
int f(int a, int b)
{
return a + b;
}
auto f_two = boost::bind(f, 1, 1);
Так что f_two()
вернет 2, эффективно вызывая промежуточную функцию, которая вызываетf(1, 1)
через какой-либо механизм реализации, возможно, что-то вроде:
double f_two_caller()
{
return f(stored_arg_1, stored_arg_2);
}
Однако мой вариант использования состоит в том, что я хотел бы связать префиксную функцию, чтобы вместо этого я мог сказать:
auto f_print = boost::bind(printf, "Hello, world!\n");
auto f_print_and_two = boost::bind_with_prefix(f, f_print, 1, 1);
Итак, f_print_and_two()
эффективно выполняет:
double f_print_and_two_caller()
{
f_print(f_print.stored_arg_1);
return f(stored_arg_1, stored_arg_2);
}
Я уверен, что для этой техники есть подходящее название, которое я мог бы использовать, чтобы найти решение, но я не могу придумать правильноесейчас ...