How do I model errors with variants in C++?

Learn how to effectively model errors with variants in C++. This approach allows for type safety and clear error handling in your C++ applications.

error handling, C++ variants, type safety, C++ programming, variant types


#include <variant>
#include <iostream>

using namespace std;

// Define a variant type for success and error states
using Result = variant;

Result divide(int a, int b) {
    if (b == 0) {
        return "Error: Division by zero"; // Return an error message
    }
    return a / b; // Return the result of the division
}

int main() {
    Result result = divide(10, 2);
    if (holds_alternative(result)) {
        cout << "Result: " << get<int>(result) << endl;
    } else {
        cout << get<string>(result) << endl; // Handle the error
    }

    result = divide(10, 0); // Attempt division by zero
    if (holds_alternative(result)) {
        cout << "Result: " << get<int>(result) << endl;
    } else {
        cout << get<string>(result) << endl; // Handle the error
    }

    return 0;
}
    

error handling C++ variants type safety C++ programming variant types