We worked around this failure by changing:
Func = boost::bind(Func, _1) && boost::bind(&Boom::Oops, _1);
to
Func = boost::bind(AND, Func, &Boom::Oops, _1); // custom AND function
Not sure why it used to work, or why it still works with raw pointers, but not shared_ptr. The actual change happens from 1.59 (working) to 1.60 (changed behavior).
Jason