A switch statement can make one branch for each enum value.

Enum Switch

enum_switch.cpp
#include <iostream>
#include <string>

enum class OrderStatus {
    NewOrder,
    Paid,
    Shipped
};

int main() {
    OrderStatus status = ;
    std::string message;

    switch (status) {
        case OrderStatus::NewOrder:
            message = "wait for payment";
            break;
        case OrderStatus::Paid:
            message = "pack order";
            break;
        case OrderStatus::Shipped:
            message = "send tracking";
            break;
    }

    std::cout << "message=" << message << std::endl;
    return 0;
}
#include <iostream>
#include <string>

enum class OrderStatus {
    NewOrder,
    Paid,
    Shipped
};

int main() {
    OrderStatus status = ;
    std::string message;

    switch (status) {
        case OrderStatus::NewOrder:
            message = "wait for payment";
            break;
        case OrderStatus::Paid:
            message = "pack order";
            break;
        case OrderStatus::Shipped:
            message = "send tracking";
            break;
    }

    std::cout << "message=" << message << std::endl;
    return 0;
}
#include <iostream>
#include <string>

enum class OrderStatus {
    NewOrder,
    Paid,
    Shipped
};

int main() {
    OrderStatus status = ;
    std::string message;

    switch (status) {
        case OrderStatus::NewOrder:
            message = "wait for payment";
            break;
        case OrderStatus::Paid:
            message = "pack order";
            break;
        case OrderStatus::Shipped:
            message = "send tracking";
            break;
    }

    std::cout << "message=" << message << std::endl;
    return 0;
}
enum switch Switching on an enum keeps branch labels tied to named states.