Open
Description
Reliance on transitive includes can make the codebase more fragile for refactoring efforts both within the library codebase and for dependent projects. I ran into this issue when experimenting with zim-tools, where libzim's version.h has a dependency on <iostream>
, but if <iostream>
isn't included before #include <zim/version.h>
there is a build error.
Line 31 in c465e15
https://github.com/openzim/zim-tools/blob/768cbe534156a44abe7678493c12e52b2a3194a3/src/version.h#L23
There is a clang tool called Include What You Use (IWYU) which can do most of the work for this (with some spot checking).
If this is approved I can put in a PR.