class A {
std::scoped_ptr<X> pX;
A : pX(new X) {}
}

もうね、コンストラクタの初期化リストで初期化した後は
一切触りたくないわけさ。ところで new X に失敗したら
コンストラクタ中で throw std::bad_alloc() していい?