#include <boost/shared_ptr.hpp>
using boost::shared_ptr;
class SuperFoo{};
class Foo : public SuperFoo{};
void DoSomething2(shared_ptr<SuperFoo> p){}

int _tmain(int argc, _TCHAR* argv[]){
DoSomething2(shared_ptr<Foo>(new Foo));
return 0;
}

VC++2005だがエラーなんて起こらないぞ