So you now have to prefix ALL methods of f's class with "if (error) return error;". Nice.
And of course, you can forget about doing "b.twiddle(f.jiggle())".
And it'll be especially vexing in code that might be reused in several parts of a project. Additionally, your deleters (foo_delete, bar_delete) might in turn cause errors, how are you going to process them?
It's amazing to what lengths people would go just to avoid using exceptions. Why, they'd even re-invent exceptions without all their nice properties and with all the bad ones.