普通C++程序员 VS 文艺C++程序员

原贴最初发表在QQ空间: 普通C++程序员 VS 文艺C++程序员 http://user.qzone.qq.com/31731705/blog/1323153107  
 
BBS上看到一个讲C++的帖子, C++ 这孩子 是不是误入歧途了?,让我想起了普通青年和文艺青年。  尴尬


看这个经典的NB 程序,求一个数有多少bit J

普通C++ 程序员

namespace traditional 

{ 

int bits_of(int remain) 

{ 

if (remain) 

return 1+bits_of( remain>>1 ); 

return 0; 

} 


int bits_of(void) 

{ 

return bits_of(~(int)0); 

} 

} 

 

文艺C++ 程序员

namespace modern 

{ 

template<int,typename THEN, typename ELSE> 

struct IF { typedefTHEN type; }; 


template<typename THEN, typename ELSE> 

struct IF<0,THEN,ELSE> { typedef ELSE type; }; 


template<typename T, T X> 

struct zero 

{ 

static const Tvalue = X; 

}; 


template<typename T, T X> 

struct bits_of 

{ 

typedef typenameIF<X, bits_of<T,(X>>1)>, zero<T,0> >::type type; 

static const Tvalue = type::value + !!X; 

}; 

}

还有文青的unit test,

typedef int a0[bits_of<int,0>::value==0? 1: -1];
typedef int a1[bits_of<int,1>::value==1? 1: -1];
typedef int a2[bits_of<int,2>::value==2? 1: -1];
typedef int a3[bits_of<int,3>::value==2? 1: -1];
typedef int a4[bits_of<int,4>::value==3? 1: -1];
typedef int a7[bits_of<int,7>::value==3? 1: -1];
typedef int a8[bits_of<int,8>::value==4? 1: -1];
typedef int a15[bits_of<int,15>::value==4? 1: -1];
typedef int a16[bits_of<int,16>::value==5? 1: -1];  

第三类C++ 程序员

namespace third_party 

{ 

// 您确定您能看懂?   

} 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值