BBS上看到一个讲C++的帖子, C++ 这孩子 是不是误入歧途了?,让我想起了普通青年和文艺青年。
看这个经典的NB 程序,求一个数有多少bit 。
普通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
struct IF { typedefTHEN type; };
template
struct IF<0,THEN,ELSE> { typedef ELSE type; };
template
struct zero
{
static const Tvalue = X;
};
template
struct bits_of
{
typedef typenameIF
static const Tvalue = type::value + !!X;
};
}
还有文青的unit test,
typedef int a0[bits_of
typedef int a1[bits_of
typedef int a2[bits_of
typedef int a3[bits_of
typedef int a4[bits_of
typedef int a7[bits_of
typedef int a8[bits_of
typedef int a15[bits_of
typedef int a16[bits_of
第三类C++ 程序员
namespace third_party
{
// 您确定您能看懂?
}
摘自 Viper的专栏