A lot of programmers prefer printf over std::cout due to its simpler formatting; however, printf suffers from safety issues. A huge step forward to solving this problem was the introduction of the {fmt} library (see https://fmt.dev). C++20 has accepted this into the standard library, but versions exist compatible as far as C++11.
So I propose reworking the report.hpp to take this approach as an option/alternative to .