It's zero runtime overhead in the good case but still has an executable size overhead for functions that previously did not need to run any destructors.
Very true. Then again, if you don't need to tear down anything (ie. run destructors) during error handling you're either not doing any error handling or you're not doing any useful work.