您的位置:首页 > 编程语言 > C语言/C++

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

2011-12-12 14:19 821 查看
原贴最初发表在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

{

// 您确定您能看懂?  

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ struct bbs c qq