I actually kind of like header files. I find that they can nicely separate external interfaces from internal interfaces. They also can summarize an interface nicely.
They are not without problems. Complete template definitions, default circular includes. Not supporting partial classes. Ect.
Compared to modules I don't think header files have even a single redeeming quality. They are a historical artifact.
Those stuff can be generated by the computer itself through automation. Its just headache to manage 2 files