Its rarely the case that you can fix 100 errors, and everything is working just 100%. There's often one corner case that works just a little bit differently.
Depends on the power of the type system. In languages with stronger / more expressive type systems than C++ (e.g. Haskell or Scala) the compiler catches really a huge amount of possible problems. The downside is it sometimes catches non-problems, too.
> There's often one corner case that works just a little bit differently.
You might just as well miss that one corner case in your test suite. This is the problem with tests - you can never be sure.
If you pick just the right thing to break, the corner cases break as well. (Sometimes you do need to temporarily break a few things in order to figure out where extra changes need making.)
I'm not saying it can't go wrong when you're finished - it just usually doesn't. And it just doesn't take much effort to fix when it does.