unfortunately only shared ptr and exceptions