I have recently gotten into a project where the usage of header guards is forbidden as it is "bad design". Custom types are forward declared and headers are only included in cpp files.
This is the first project I have seen doing this and I find it quite uncomfortable to work with and if it were up to me I'd introduce the guards.
Using them has always been a given for me, so I don't even know how to argue against not using them other than highlighting the fact that it's uncomfortable. The project clearly compiles so in this case it's doable, but I'm left with a couple of questions:
- Are there other scenarios where it would make the development impossible?
- Does this style have a well-known benefit?
- Are there known open source projects using this approach?
- How would you convince the project leader to allow using guards?