C++ inline namespace

参考:http://blog.aaronballman.com/2011/07/inline-namespaces/
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbclx01/namespace_association.htm

提供了一种“默认名字空间”的机制。当不指定具体的名字空间时,将按默认名字空间对待。

 1 #include <stdio.h>
 2 
 3 namespace Outer{
 4 
 5     inline 
 6     namespace V2{
 7         void foo(){
 8             printf("V2::foo()\n");
 9         }
10     }
11     
12     namespace V1{
13         void foo(){
14             printf("V1::foo()\n");
15         }
16     }
17 }
18 
19 int main(){
20 
21     Outer::V1::foo();
22     Outer::V2::foo();
23     Outer::foo();
24 }

第23行,调用Outer中的默认名字空间V2的foo(). 
用途:新版本的升级测试。foo升级到V2版本。如果升级不理想,可以把V1改成inline,V2改成非inline。这将就降级回旧版的foo函数。
从前是用宏#ifdef V2  ...#endif之类的技术。使用inline namespace带来一个明显的好处是:可以同时使用新版本的foo和旧版本的foo(正如第21行所示)。

 

原文链接: https://www.cnblogs.com/thomas76/p/8707609.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++ inline namespace

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/397514

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月11日 上午9:13
下一篇 2023年4月11日 上午9:13

相关推荐