From: John Maddock (jz.maddock_at_[hidden])
Date: 2022-05-13 17:19:16


> If they ever are.
>
> Modules can work for leaf libraries, but for libraries used as dependencies
> by other libraries, you'll encounter a situation where the same translation
> unit imports boost.lib or "boost/lib.hpp" in one place and then includes
> "boost/lib/something.hpp" in another, which is probably never going to
> work correctly.
>
> I suppose it might stand a chance if all the imports are done first, so that
> the include guard macros are defined. But I think that's not going to work
> in practice either.
>
> Basically, all Regex consumers also must respect the REGEX_AS_MODULE
> macro and switch to `import boost.regex`. Repeat per every library.

Modules don't expose macros, so there is no way to signal "this must be
used as a module", so you have to find every usage of library X and make
sure they are either all modules or all includes.  Or at least that
anything included doesn't use import: the other way around is fine since
the include is hidden within the module.

John.