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

 此代码计算开方。

偏特化和特化类似于函数重载,参数个数与类型都与普通类型不一样。

 

你可能感兴趣的:(template)