C++模块是否使匿名命名空间变得多余?

6

C++20 引入了模块化系统。在模块中未被导出的任何符号,将具有模块内部链接。而未命名的命名空间为实现在未命名命名空间内定义具有文件内部链接的机制提供了一种方法。这是否意味着,当模块化成为C++社区的通用实践时,未命名的命名空间将变得无用?

1个回答

2

不会:由于(许多)编译器一次只能看到一个翻译单元,因此为了优化,指示实体不能在其他任何地方使用仍然是有用的。它还避免了模块单元之间意外冲突的可能性(即使与更广泛的代码库相比,这种可能性应该更小)。


我相信大多数人会选择“每个cpp文件一个模块”的方式。 - John Z. Li
1
@JohnZ.Li - 你的想法是错误的。引入模块的最有力的原因之一是能够将多个逻辑相关的翻译单元组织在一起。 - StoryTeller - Unslander Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接