正在删除c++中的命名空间提升

Deleting namespace boost in c++

本文关键字:命名空间 删除 c++      更新时间:2023-10-16

我正在eclipse中编写c++。当我添加一个新类时,它会要求一个名称空间。我添加了助推,因为我正在使用助推。当我看到这个类时,eclipse用名称空间boost{}包围了我的类。我认为名称空间是针对java/c#的,而不是c++。此外,我做了一点研究,看起来添加命名空间提升是一个很大的禁忌。所以我删除了命名空间提升。有一个问题,有没有充分的理由让我保留名称空间提升,并在开发周期的后期删除它?

谢谢,我就是这么想的。我不知道eclipse为什么要我添加一个名称空间

嗯@Aaron,"添加"命名空间是一种很好的做法,除非您想回到具有永久冲突库符号笨拙的libraryx_myfunction命名约定的C API时代。

事实上,为类选择一个合适的名称空间是非常基本的,我会重新表述一下。这不是

向类中添加命名空间

相反,它是

创建一个命名空间,以便(稍后)向 添加类型和函数。

命名空间用于将代码与LibraryX、LibraryX与LibraryY等分离。因此,选择可能发生冲突的命名空间名称确实是一种糟糕的做法。定义用户定义的类型在std命名空间中明确禁止(或者随之而来的是未定义的行为)。

将内容放入其他lirary的命名空间会给带来麻烦

  • 图书馆的未来扩建
  • 这些库中的内部未记录符号
  • ADL引起的细微错误(库可能会在不知情的情况下开始查找您的函数,而不是自己的函数)

为什么我应该保留名称空间提升?

为什么?你在扩展boost库吗?我看不出有任何理由保持命名空间提升,事实上,对于小型项目,您根本不需要命名空间。名称空间是为了防止名称冲突而设计的,对于一个小项目,我怀疑你是否会有任何名称空间(不过要小心swap)。

基本上,你的问题几乎和问我为什么不应该用namespace std包围我的代码一样,毕竟我使用的是标准库,对吧?