vc下一个模板程序的困惑
同一段代码,在gcc中编译通过,并且能正常执行,但是到了vc下报错.请各位弟兄帮忙.代码如下
#include <iostream>
using namespace std;
template <class Type,int size> Type min(Type (&r_array)[size])
{
Type min_val=r_array[0];
for(int i=1;i<size;++i)
{
if(r_array[i]<min_val)
min_val=r_array[i];
}
return min_val;
}
int ia[]={10,6,7,3,23};
double da[]={10.2,7.1,14.5,3.2,25.0,16.8};
int main()
{
int i=min(ia);
if(i!=3)
cout<<"failed!"<<endl;
else
cout<<"ok!"<<endl;
double d=min(da);
if(d!=3.2)
cout<<"failed!"<<endl;
else
cout<<"ok!"<<endl;
return 0;
}
编译的时候报错
min.cpp
E:\ctest\min.cpp(4) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal
E:\ctest\min.cpp(34) : error C2784: 'Type __cdecl min(Type (&)[1])' : could not deduce template argument for ' (&)[1]' from 'int [5]'
E:\ctest\min.cpp(40) : error C2784: 'Type __cdecl min(Type (&)[1])' : could not deduce template argument for ' (&)[1]' from 'double [6]'
Error executing cl.exe.