#include <functional>
#include <iostream>

struct Foo {
  Foo(int num) : num_(num) {std::cout << "Hello World" << std::endl;}
  Foo(const Foo& f) : num_(f.num_) {std::cout << "Hello World copy" << std::endl;}
  ~Foo() {std::cout << "Goodby World" << std::endl;}
    void print_add(int i) const { std::cout << num_+i << '\n'; }
    int num_;
};

int main()
{
  using std::placeholders::_1;
  std::function<void(int)> f_add_display59 = std::bind( &Foo::print_add, Foo(75), _1 );

}
