模块命名冲突

Modules naming conflict

是否可以在不导入模块的情况下使用导出的 class/function?考虑这个例子:

System.ixx

export module System;

export class String {...};

System2.ixx

export module System2;

export class String {...};

有没有办法像System::StringSystem2::String一样使用它?显然,当我导入这两个模块时,我得到一个编译器错误。

模块改变了您从多个文件访问代码的方式,但仅此而已。它们(在大多数情况下)不会影响 C++ 作为一种语言的基本性质。

C++ 已经有一个工具来管理不同库和源位置之间的名称冲突:命名空间。因此,C++ 模块无需解决已经充分解决的问题。