常量表达式与默认参数值
Template参数并不一定非得是某种类型,也可以用常量表达式
template<int len>class num_sequenc{public:num_sequece(int beg_pos=1);};template<int len>class Fibonacci:public num_sequence<len>{public:Fibonacci(int beg_pos=1):num_sequence<len>(beg_pos){}};Fibonacci<16> fib1;
以Template作为一种设计策略
对仿函数(function object)也可以采用template的形式进行设计;此外,因为有些自定义类的比较操作并未定义,也可以通过通过template的机制,将相应的仿函数(谓词)以参数的形式传递进来;
template <typename elemType, typename Comp=less<elemType>>//函数对象or谓词,默认为lessclass LessThanPred{public:LessThanPred(const elemType &val):_val(val){}bool operator()(const elemType &val)const {return Comp(val,_val);}private:elemType _val;}
Member Template Function
小结
- 模板可以采用常数表达式,而非一定得是某种具体的类型
- 仿函数(谓词),也可做为模板传入;
