// 0.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
template<class T> inline T sum_all(T* first, T* last)
{
T sum;
for(sum = 0; first != last; ++first)
{
sum += *first;
}
return (sum);
}
template<int> int sum_all(int* first, int* last);
//template<float> float sum_all(float* first, float* last);
// error C2993: 'float' : illegal type for non-type template parameter '__formal'
template<char> char sum_all(char* first, char* last);
//template<void> void sum_all(void* first, void* last);
// 'void' : illegal type for non-type template parameter '__formal'
template<void*> void* sum_all(void** first, void** last);
template<int*> int* sum_all(int** first, int** last);
template<float*> float* sum_all(float** first, float** last);
template<char*> char* sum_all(char** first, char** last);
int _tmain(int argc, _TCHAR* argv[])
{
//test for int type
/* int sum = 0;
int num[5];
int *p = &num[0];
int *q = &num[4];
for(int i = 0; i < 5; i++)
{
num[i] = i;
}
sum = sum_all(p, q);
cout<<"sum "<<sum<<endl;
*/
//test for float type
float sum = 0;
float num[5];
float *p = &num[0];
float *q = &num[4];
for(int i = 0; i < 5; i++)
{
num[i] = (float)i;
}
sum = sum_all(p, q);
cout<<"sum "<<sum<<endl;
return 0;
}
//sum_all(&x, &x)的结果是什么,通过这种方式得到的x的值是否是一种很好的做法?
//float、void类型特化模板时为什么会出现问题,
//测试代码改如何去写,才是比较好的写法