Can anyone tell me the correct incantation to get the 'Not OK' lines to work?

Thx, Rob.

#include <boost/function.hpp>
#include <boost/phoenix/core.hpp>
#include <boost/phoenix/operator.hpp>
#include <boost/phoenix/bind/bind_member_variable.hpp>
#include <boost/phoenix/bind/bind_function.hpp>
#include <boost/function.hpp>
#include <list>

struct S { int i; };

void f( std::list<S> & l, int i )
{
    using boost::phoenix::arg_names::_1;
    using boost::phoenix::arg_names::_2;

    // OK
    l.remove_if( bind( & S::i, _1 ) >= i );

    // Not OK.
    boost::function<bool( int, int )> pred = _1 >= _2;
    l.remove_if( bind( pred, _1, i ) );
}