or
> All classes must implement a correct copy constructor, assignment operator, and stream insertion operator
like. what. why does it need an assignment operator (not a move constructor???) and a stream insertion operator.
using std::cout is cringe, use fmt::print/fmt::println (or std::print/std::println (or a logger which uses either of these)) and then implement a custom formatter.
also, not Everything needs a way to be formatted to stdout....