A concept-centered standard library for C++20, enabling safer and more reliable products and a more modern feel for C++ code.; Also home of Subdoc the code-documentation generator.
Add operator<< to them, and put the impls into .cc files so we can limit to iosfwd.h. This is doable as they aren't templates.
Add a ToString() method to them, which returns a sus::String, which itself needs to be streamable. We still end up with iosfwd.h at least.
Implement Display/Debug concepts which gives them .debug() and .display() methods instead, which take as input a thing to write to. These can also go into a .cc file if helpful. Then also write our own stuff like fmt that uses {} to call .display() and {:?} to call .debug().
We need a better story to print numerics though before they are stabilized, whatever we pick.
Lots of stuff expects C++ types to be streamable. But stream headers are also the worst for compile times.
Right now, to print a numeric you need to cast it to a primitive:
We could:
We need a better story to print numerics though before they are stabilized, whatever we pick.