Quote Originally Posted by rempas
Then what's the point of having modules if the system is so stupid? I mean... I know that you probably can't answer this question as you were not the one design the system but still I'm really wondering what's the idea behind them...
On one hand, you can say that this is the classic design-by-committee issue: from what I understand, the C++ standards committee has been debating the module feature for the better part of the last decade. Supposedly they almost included it in C++17, but changed their mind, and perhaps they couldn't agree on how to deal with this mutual dependency issue, but decided that it was not such a blocker for them to delay again, so they included modules in C++20.

On the other hand, it is true that this mutual dependency issue isn't that much of a blocker. If you're designing a system with two components that are so tightly coupled with a mutual dependency that you cannot extract out the commonality into a third component that they can separately depend on, then that suggests that the two components should really be one component with high cohesion between the subcomponents instead. From this perspective, there's no mutual dependency issue with the current C++ modules feature; rather there is a mutual dependency/tight coupling issue with how you're structuring your code.