相关疑难解决方法(0)

那么内联未命名的命名空间?

对于大师来说很快:C++ 11允许声明未命名的命名空间inline.这对我来说似乎是多余的; 在未命名的命名空间中声明的事物已经被使用,好像它们是在封闭的命名空间中声明的一样.

所以我的问题是:这是什么意思

inline namespace /*anonymous*/ {
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

它与传统的有什么不同?

namespace /*anonymous*/ {
    // stuff
}
Run Code Online (Sandbox Code Playgroud)

我们从C++ 98中了解和喜爱?使用时,有人能举出不同行为的例子inline吗?

编辑:只是为了澄清,因为这个问题被标记为重复:我一般不会询问命名内联命名空间.我理解那里的用例,我认为它们很棒.我特别询问将命名的命名空间声明为什么意思inline.由于未命名的命名空间必然始终是TU的本地命名空间,因此符号版本化似乎并不适用,所以我很好奇添加inline实际上了什么.


另外,关于未命名的命名空间的标准[7.3.1.1]说:

inline当且仅当它出现在unnamed-namespace-definition中时才会出现

但这对我的非语言律师的眼睛来说似乎是一种重言式 - "它出现在定义中,如果它出现在定义中"!对于奖励积分,任何人都可以解释一下这些标准实际上在说什么吗?

编辑: Cubbi在评论中声称奖励积分:

该标准是说,不具名的命名空间定义的行为就好像它被取代X,其中inline出现在X当且仅当它出现在未命名的命名空间定义

c++ namespaces c++11 inline-namespaces

20
推荐指数
2
解决办法
2092
查看次数

标签 统计

c++ ×1

c++11 ×1

inline-namespaces ×1

namespaces ×1