C++ Error Handling with Style: The Benefits of optional and expected