| modules were my #1 wanted feature in C++, but they are very disappointing to me: - they allow `.` in their names to signify hierarchy, but have no built-in notion of hierarchy or submodule. This means possible error messages will have to be suboptimal - they are orthogonal to namespaces, meaning if you have a module `foo.bar` any identifier it will export will be in the global namespace unless you put it in the `foo::bar` namespace in the `foo.bar` module file. As a user this means that I can import a `foo.bar` module and expect symbols to be imported in any namespace. - btw, what happens if different modules import the same name? I'll let you guess:-D. Modules were the chance to eliminate this kind of issues by eliminating the notion of shared namespaces, but oh well... - modules have interface units, implementation units, partitions, interface partition and implementation partition. There must be exactly one non partition interface unit, called the primary module interface. Instead of, you know, just having modules and submodules files like all modern module systems in existence. - Modules add new and fun ways to get ill-formed, no diagnostic required programs. Such as not re-exporting all interface partitions. I really hoped that modules were the chance of introducing a simpler compilation model for C++. I'm not pleased with the result. Some references: [0]: https://vector-of-bool.github.io/2019/01/27/modules-doa.html [1]: https://vector-of-bool.github.io/2019/03/10/modules-1.html |