I'd be worried about moving the decrements because you want to be sure that during destruction you can't upgrade a weak pointer (you're destroying the contents at that time).