Suppose you want to compute 3 - x for a vector of floats: using namespace std; vector<float> v; transform(v.begin(), v.end(), v.begin(), boost::bind(minus<float>(), _1, 3.0f)); This compiles fine on the MSVC 8.0 compiler. But I want to compute x - 3, and replacing _1 with _2 in the above expression yields a mess of errors, starting with: c:\program files\boost\boost_1_34_1\boost\bind.hpp(278) : error C2679: binary '[' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion) c:\program files\boost\boost_1_34_1\boost\bind.hpp(205): could be 'float boost::_bi::list1<A1>::operator [](boost::arg<I>) const' with [ A1=float &, I=1 ] Anybody have any thoughts on this one? Thanks, Mark