例えば参照カウント式のスマートポインタを作るとして、
ポリモーフィズムを扱いたい場合には

explicit counted_ptr(T* p = 0) : ptr_(p), count_(new long(1)) { }

template <typename U>
explicit counted_ptr(U* p = 0) : ptr_(p), count_(new long(1)) { }

という二つのコピーコンストラクタを作るのかなぁと思ったのですが、
良く良く見ると後者は前者を包含してるように思えます。
という事は前者はいらないのでしょうか?
ちょっとこの辺り(型の自動変換の問題とか?)にイマイチ自信が無いのですが、
後者だけでは何か問題があったら教えて頂けますでしょうか。