//******************************************************** // The following code example is taken from the book // C++23 - The Complete Guide // by Nicolai M. Josuttis (www.josuttis.com) // http://www.cppstd23.com // // The code is licensed under a // Creative Commons Attribution 4.0 International License // http://creativecommons.org/licenses/by/4.0/ //******************************************************** #include #include #include enum class Color { red, green, blue }; template<> struct std::formatter : std::formatter { auto format(Color c, auto& ctx) const { std::string value; switch (c) { case Color::red: value = "red"; break; case Color::green: value = "green"; break; case Color::blue: value = "blue"; break; default: value = std::format("Color{}", static_cast(c)); break; } return std::formatter::format(value, ctx); } }; int main() { Color col = Color::red; std::cout << std::format("col: {:>10}\n", col); col = Color::green; std::cout << std::format("col: {:>10}\n", col); col = Color{13}; std::cout << std::format("col: {:>10}\n", col); }