なぜshared_ptr暗黙のコンストラクターがないのか疑問に思いました。それがそうではないという事実はここにほのめかされています:これのためにboost::shared_ptrを取得する
(理由はわかりましたが、とにかく投稿するのは楽しい質問だと思いました。)
#include <boost/shared_ptr.hpp>
#include <iostream>
using namespace boost;
using namespace std;
void fun(shared_ptr<int> ptr) {
    cout << *ptr << endl;
}
int main() {
    int foo = 5;
    fun(&foo);
    return 0;
}
/* shared_ptr_test.cpp: In function `int main()':
 * shared_ptr_test.cpp:13: conversion from `int*' to non-scalar type `
 *  boost::shared_ptr<int>' requested */