#include <iostream>
#include <functional>
using func_t1 = std::function<double( double )>;
using func_t2 = std::function<double( double, double )>;
double f2( double x, double y )
{
std::cout << "f2(" << x << "," << y << ")" << std::endl;
return x + y;
}
int main()
{
using namespace std::placeholders;
double fixed = 123;
func_t1 fa = [fixed]( double x ) { return f2( x, fixed ); };
func_t1 fb = std::bind( f2, _1, fixed );
fa( 1 );
fb( 2 );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KCnVzaW5nIGZ1bmNfdDEgPSBzdGQ6OmZ1bmN0aW9uPGRvdWJsZSggZG91YmxlICk+Owp1c2luZyBmdW5jX3QyID0gc3RkOjpmdW5jdGlvbjxkb3VibGUoIGRvdWJsZSwgZG91YmxlICk+OwoKZG91YmxlIGYyKCBkb3VibGUgeCwgZG91YmxlIHkgKQp7CiAgICBzdGQ6OmNvdXQgPDwgImYyKCIgPDwgeCA8PCAiLCIgPDwgeSA8PCAiKSIgPDwgc3RkOjplbmRsOwogICAgcmV0dXJuIHggKyB5Owp9CgppbnQgbWFpbigpCnsKCXVzaW5nIG5hbWVzcGFjZSBzdGQ6OnBsYWNlaG9sZGVyczsKICAgIGRvdWJsZSBmaXhlZCA9IDEyMzsKICAgIGZ1bmNfdDEgZmEgPSBbZml4ZWRdKCBkb3VibGUgeCApIHsgcmV0dXJuIGYyKCB4LCBmaXhlZCApOyB9OwogICAgZnVuY190MSBmYiA9IHN0ZDo6YmluZCggZjIsIF8xLCBmaXhlZCApOwogICAgZmEoIDEgKTsKICAgIGZiKCAyICk7Cn0=