Why care about this? Even Rust doesn't try to solve this problem...because it isn't really a problem in practice. In c++/rust code you use value/unique types 99.9% of the time, and reference counting is only for shared/aliased objects. Reference counting == rare and unimportant