I'd be more worried about early exits from loops in an iterator, e.g. if you had a .any() derived function, or short-circuiting logic in boolean operators with a lazily evaluated second parameter. A type system won't protect you from that.
Or maybe an early return and having an expensive destructor called as it goes out of phase with RAII
Or maybe an early return and having an expensive destructor called as it goes out of phase with RAII