#include <iostream>

enum type { soft, brittle, hard };

std::ostream& operator<<(std::ostream& os, const type v)
{
    switch (v)
    {
        case soft: return os << "soft";
        case brittle: return os << "brittle";
        case hard: return os << "hard";
        default:   return os << "#" << v;
    }

    return os << "<error>";
}

int main()
{
    type a = hard;
    std::cout << a << std::endl;
}
