2

Suppose I have method:

void foo(const std::string& s);

Can I create boost::function:

boost::function<void(const std::string&)> f = boost::bind(foo, temp);

where temp is char* that is deleted before f is called.

dimba
  • 26,717
  • 34
  • 141
  • 196

2 Answers2

5

Yes. Bind cannot know that the char* can be held in a string, or that it is being passed to a string. To circumvent this, use:

boost::bind(foo, std::string(temp));

So that your temp is copied into the binder as a string.

ltjax
  • 15,837
  • 3
  • 39
  • 62
0

And this is compiling for you? It should be

boost::function<void()> f = boost::bind(foo, std::string(temp));
Pawel Zubrycki
  • 2,703
  • 17
  • 26