C++ Templates之模板元编程
#ifndef POW3_H
#define POW3_H
template <int N>
class Pow3
{
public:
	enum{result = 3 * Pow3<N-1>::result};
};
template<>
class Pow3<0>
{
public:
	enum{result = 1};
};
#endif
此代码计算三的N次方。
#ifndef POW3_H
#define POW3_H
template <int N,int LO=1,int HI=N>
class Sqrt
{
public:
	enum{mid = (LO + HI + 1)/2};
	enum{result = (N < mid * mid) ? Sqrt<N,LO,mid-1>::result:Sqrt<N,mid,HI>::result};
};
template<int N,int M>
class Sqrt<N,M,M>
{
public:
	enum{result=M};
};
#endif
此代码计算开方。
偏特化和特化类似于函数重载,参数个数与类型都与普通类型不一样。
    一切源于对计算机的热爱
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号