I know it is possible to use the fmt formatting library in header-only mode: How to use fmt library in the header-only mode? but - why isn't it just header-only
What are the benefits of a header only library and why would you write it that way oppose to putting the implementation into separate file?