Your code is fine when the bound thing is a method - you could use
'&a' rather than 'boost::ref(a)' (a pointer to 'a' can be used for a
method call in place of a reference to 'a')
However, for your 'double_it', I'd personally just write a function
rather than define a struct with a method. Then, 'a' is not needed and
the bind would be:
std::for_each( v.begin(), v.end(), boost::bind( &double_it, _1 ) );