In C++23, the std::expected
type is introduced to handle the outcomes of functions that can either succeed with a value or fail with an error, enhancing error handling in C++. It provides a way to represent the success or failure state of a computation without using exceptions.
Here's a simple example demonstrating how to use std::expected
in C++23:
#include
#include
std::expected divide(int a, int b) {
if (b == 0) {
return std::unexpected("Division by zero error!");
}
return a / b;
}
int main() {
auto result = divide(10, 0);
if (!result) {
std::cout << "Error: " << result.error() << std::endl;
} else {
std::cout << "Result: " << result.value() << std::endl;
}
return 0;
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?