#include <iostream>
#include <functional>
typedef std::function<int(int,int)> addPtr;
int add(int a, int b)
{
return (a)+(b);
}
void test1()
{
addPtr addFunc = add;
std::cout<<addFunc(10, 10)<<std::endl;
int arg = 10;
auto addFunc1 = [=](int a, int b)->decltype((a) + (b) + arg){
return (a) + (b) + arg;
};
std::cout<<addFunc1(1,2)<<std::endl;
}
int add_three(int a, int b, int c)
{
return a+b+c;
}
void test2()
{
auto addFunc = std::bind(add_three, std::placeholders::_1, 3, 4);
std::cout<<addFunc(5)<<std::endl;
std::cout<<addFunc(5,6, 7)<<std::endl;
}
int main()
{
test1();
test2();
return 0;
}