#include <functional>
#include <iostream>
using std::cout;
using std::tr1::bind; using namespace std::tr1::placeholders;
template <class Binder>
void show(Binder binder)
{ // apply bind object
int i = 1;
double d = 2.1;
binder(i, d);
}
void display(int val)
{ // bound function
cout << val << '\n';
}
int main()
{ // create and apply bind objects
show(bind(display, 0.2));
show(bind(display, _1));
show(bind(display, _2));
return 0;
}