I may be in the minority, but I like header files. Interface => Implementation, enforced at the file level. Add Obj-C's #import macro and they even look reasonable!
Well, you either have to publish your member variables and their names to the world, or use PIMPL, which is (I think) a bit of a hack. Having partial classes (a la C#) would be nice for this.
There even was a module system but it got scrapped. Complexity and impact on the core language among the reasons.
if i want to distribute an interface without implementation, some utility should look through the implementation and produce a header file for me.
leaving it up to the programmer is a waste of time.