模板参数可以是class,也可以是:整数及枚举类型、指向对象或函数的指针、对象或函数的引用、对象成员的指针。
1 整数模板参数,但是必须是编译期常量,实例如下:
#include<stdexcept>
#include<iostream>
using namespace std;
template<typename T,unsigned size>
class array{//具备越界检查的数组
public:
T& operator[](unsigned i){
if(i>=size)
throw std::out_of_range("array out of arrage\n");
else
return elems[i];
}
public:
T elems[size];
};
int main(){
array<char,10> myArray;
std::cout<<myArray[10]<<std::endl;
return 0;
}
2 函数指针作为模板参数,实例如下:
#include<iostream>
using namespace std;
template<typename T,void(*f)(T v)>
void