This gives up the significant benefits of RAII, which are made significantly safer and more useful through the use of references and std::unique_ptr. By using initialization methods rather than constructor methods, you create a situation where your destructors don't necessarily make
sense and can't be relied on to be dealing with initialized objects (thus increasing the amount of boilerplate code that can fail) or you don't use destructors at all (at which point you regress to the "boy, I hope I scope-guarded correctly and cleaned up along every path of execution!" state of C).
Writing C++ without using C++'s idioms is usually, if not almost always, creating more technical and business risk for the writer and the consumer than using C++'s idioms in the first place. (That some of these idioms are conceptually very difficult is a very valid criticism of C++, and one that Rust in particular seems well-positioned to be better about, but I'd take the bear traps of C++ over the land mines of C almost any day.)