Error code returns were bad so we invented exceptions. Much better we said.
Then we realised exceptions had their problems - with 52% of a recent ISO survey's respondents saying they were banned on all or part of their codebases! We've been trying to patch them up how we can (with noexcept, for example) - but most of the problems are systemic.
So there's been a return to error codes. But now we have new features in the language (arithmetic data types, including variant and optional) - and the promise of more coming (expected, outcome?) - that bring us closer to the best of both worlds - although, perhaps, with different compromises.
But there's more. Where do error_code and error_condition fit in? What's all this about monadic binding? A try keyword? What do other languages that are further down this road do and what can we learn from them?
This talk will be a tour of the past, present, and possible future of C++ error handling; the trade-offs and rationale for each piece and a discussion of where to go next and what we can do as a community to get there. We'll look at a number of in-flight proposals, and include up-to-the-minute status on them following the standards meeting of the week before.