
David Abrahams wrote:
It seems to me that, since I know that binding to an rvalue is required, we ought to have a way to say "force this to be a const ref". I thought of something like
std::for_each( make_difference_iterator(p->second.begin()) , make_difference_iterator(p->second.end()) , boost::bind(&fu::writeVInt, &prox, boost::cref(_1))); ^^^^^^^^^^^^ ^
I know it's not pretty, but it sorta does what we want. Thoughts?
Have you tried to implement it? ;-)
'course not! ;-)
Is it hard?
Doesn't seem easy at first sight, even if we limit ourselves to 100% conforming compilers.
The current bind way to work around the above problem is to use an adaptor that fixes its signature to, for example, void(fu const &). Choices are function<void(fu const &)> and make_adaptable<void, fu const &> (in boost/bind/make_adaptable.hpp).
Huh! Where's make_adaptable documented?
I could've sworn that it was documented in bind.html. But it's not. It's only listed in the "files" section. Another one for the to-do list.