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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值