Subject: [Boost-users] [Bind] Unexpected behavior when binding const char* to function
From: Piotr Jachowicz (pjachowi_at_[hidden])
Date: 2010-04-26 16:34:36


Hello,

This code proceces "xyz", contrary to user intention to bind "abc":

void echo(const char* s) {
   cout << s << '\n';
}

int main()
{
   string s("abc");
   function<void ()> f = boost::bind(echo, s.c_str());
   s = "xyz";
   f();
}

This is misleading. Changing "echo(const char*)" into "echo(string)"
produces "abc", as expected. Is there any way (other than echo
wrapper) to get "abc" as expected?

-- 
Piotr Jachowicz