The following are some of the references, and source materials, from my talk, Dawn of a New Error
Proposals for C++23+:
[1]
p0709 - Zero-overhead deterministic exceptions (Herb, et al's paper)
[2]
p1028 - Status Code and standard error object (supporting work from Niall Douglas)
[3]
p1029 - [[move_relocates]] (More supporting work from Niall)
[4]
p1144 - Object relocation in terms of move plus destroy (Arthur O'Dwyer's more ambitious version)
[5]
p0798 - Monadic operations for std::optional
[6]
p0323 - std::expected
[7]
p0542 - Contracts proposal (removed from C++20, should come back, in some form, for C++23
Background and other languages:
[8]
Boost.Outcome - de-facto library impl of p0709
[9]
Swift Error handling paper - John McCall (Apple)
[10]
Midori Error handling paper - Joe Duffy
[11]
Do notation in Haskell
Existing Language features, techniques and libraries:
[12]
Simon Brand's coverage of [[nodiscard]]
[13]
Simon Brand's take on monadic use of optional and expected
[14]
Summary of SG14 discussion on <system error>
Videos:
[15]
Niall Douglas, 'Introduction to proposed std::expected' (Meeting C++ 2017)
[16]
Charley Bay on std::system_error and std::error_code (C++ Now 2017)
[17]
My previous EH talk: 'Option(al) Is Not a Failure' (Meeting C++ version)
[18]
Swift version of 'Option(al) Is Not a Failure' at iOSCOn (requires SkillsMatter login)
[19]
Swift version of 'Option(al) Is Not a Failure' at AppDevCon
[20]
Alexandrescu's 2012 talk, 'Systematic Error Handling in C++'
Other:
[21]
Andrei Alexandrescu's 2007 talk, 'Choose Your Poison'
[22]
Alexandrescu's 2002 talk, 'Error Handling in C++: Are We Inching Towards a Total Solution?'
[23]
comp.lang.c++.moderated thread on 'Exploding return codes'
[24]
Herb Sutter's ACCU 2019 keynote, 'De-fragmenting C++: Making exceptions more affordable and usable'