#include <optional>
#include <expected>
#include <iostream>
// Example using std::optional
std::optional<int> divide(int numerator, int denominator) {
if (denominator == 0) {
return std::nullopt; // Return empty optional if division by zero
}
return numerator / denominator;
}
int main() {
std::optional<int> result = divide(10, 2);
if (result) {
std::cout << "Result: " << *result << std::endl; // Output: Result: 5
} else {
std::cout << "Division by zero!" << std::endl;
}
// Example using std::expected
std::expected<int, std::string> safe_divide(int numerator, int denominator) {
if (denominator == 0) {
return std::unexpected<"Division by zero">; // Return unexpected error string
}
return numerator / denominator;
}
int main() {
auto result = safe_divide(10, 0);
if (result) {
std::cout << "Result: " << *result << std::endl; // Not executed
} else {
std::cout << "Error: " << result.error() << std::endl; // Output: Error: Division by zero
}
}
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?