std::bind1st and std::bind2nd don’t accept functors which take reference arguments, because they themselves form references to these arguments. You can
- use pointers for your function inputs instead of references
- use boost::bind
- accept the performance cost of copying the string