I am starting to experiment with Microsoft Visual Studio's C++ modules implementation. Microsoft splits the standard library into five modules:
- std.regex
- std.filesystem
- std.memory
- std.threading
- std.core
I've replaced my standard library includes with the above modules, as appropriate for each file in my project. However, I include many third-party library files. Let's say for example, a third party library has an #include <memory> in a header file, and I've already had import std.memory; in my file before including the third party library's header file.
Does the std.memory module define the include guards that would cause the third party library to skip the unnecessary #include <memory> or is it including memory, even though the module covering <memory> has already been included?
Does the standard have anything to say about this? This seems to be a significant issue during the transition to modules: if third-party libraries are used, the benefits to modules seems significantly reduced if their includes still occur as before.