最近boostを勉強しはじめたんですが、shared_ptrに入っているオブジェクトのポインタを
ダウンキャストしたい時はどうすればいいんでしょうか?
(例)
class foo{};
class bar : public foo{};
typedef boost::shared_ptr<foo> pfoo;

foo* b1 = new bar();
pfoo b2 = pfoo(new bar());

// b1なら、
if (dynamic_cast<bar>(*b1)) cout << "this is bar1" << endl;

// b2だと?
if (dynamic_cast<bar>(*b2)) ; // error!