未命名命名空间内嵌套命名命名空间的技术问询:场景、优缺点及模式判定
未命名命名空间内嵌套命名命名空间的技术问询:场景、优缺点及模式判定
我最近碰到了一种有点特殊的C++命名空间嵌套写法,先给大家看段代码——这种在已命名命名空间里套未命名命名空间,未命名空间里再嵌套另一个已命名命名空间的写法,我确认是符合语法规范的:
namespace foo { namespace { namespace bar { int baz() { return 42; }; } // bar } // unnamed int frob() { return bar::baz(); } } // foo int froz() { return foo::bar::baz(); }
现在我有两个问题想请教各位大佬:
- 和直接把
bar命名空间放在foo内部(不套未命名命名空间)的常规写法比,这种嵌套方式算是值得参考的设计模式,还是应该尽量避免的反模式? - 我自己只想到了几个比较特殊、不属于日常编码范畴的使用场景,想问问大家有没有其他更实用的应用场景?
我目前想到的特殊场景是:
- 在已有的命名空间层级(比如
a::b::internal)中,如果internal里的内容仅在当前翻译单元内使用,此时在中间插入未命名命名空间,改成a::b::<unnamed>::internal的结构,不会破坏现有的...(注:原文此处内容未完成)
备注:内容来源于stack exchange,提问作者Dirk Herrmann
相关产品推荐
相关产品推荐

