Why? Lifetime management should be simpler, why not just use shared_ptr everywhere along with basic null checks?