コンストラクタでの例外を病的に嫌った結果がこれだよ!

コンストラクタで例外を投げることが禁止されているわけではないことは承知ですが、割とこういうコードをよく書きます。

class Hoge;
typedef boost::shared_ptr<Hoge> HogePtr;

class Hoge {
public:
    HogePtr create() {
        HogePtr p(new Hoge());
        p->mSome.reset(new Some());
        return p;
    }
    Some* getSome() const { mSome.get(); }
    ~Hoge() {}
private:
    Hoge() {}
    boost::scoped_ptr<Some> mSome;
};

最近はあまり人のC++コードを読む機会もなくなったので、いいコードを書くセンスが麻痺してます。合ってるのかどうなのか分からないので晒してみるテスト。