这段代码vc6编译不过。
#include <iostream>
using namespace std;
template <typename T,int size>
T Taxis(T(&array)[size])
{
T min_val = array[0];
for(int i = 1;i<size;++i)
{
if(array[i] < min_val)
{
min_val = array[i];
}
}
return min_val;
}
int main()
{
int array[] = {1,2,4,3,2,6,5,9,2,1,4,6,8};
cout<<Taxis(array)<<endl;
return 0 ;
}
C:\Documents and Settings\Administrator\×ÀÃæ\н¨Îļþ¼Ð\11111111\1.cpp(6) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal
C:\Documents and Settings\Administrator\×ÀÃæ\н¨Îļþ¼Ð\11111111\1.cpp(22) : error C2784: 'T __cdecl Taxis(T (&)[1])' : could not deduce template argument for ' (&)[1]' from 'int [13]'
Error executing cl.exe.
1.obj - 2 error(s), 0 warning(s)
是《c++ Primer》的例子
[解决办法]
g++可以正常运行
所以你换编译器吧,可能是编译器不支持
[解决办法]
Taxis(array,sizeof(array)) ,Taxis(array)没什么通用性
template <typename T>
T Taxis(const T* array ,size_t size)
{
int min_index = 0;
for(int i = 1;i <size;++i)
{
if(array[i] < array[min_index])
{
min_index = i;
}
}
return array[min_index];
}
[解决办法]
vs2005 可以编过
[解决办法]
vc6对泛型支持的不好
[解决办法]
我也出现过这个问题。
vc6对范型还是不够支持
[解决办法]
vc6对模板支持不够,建议不要用了
[解决办法]
嗯,对的,我用vs2005调试已经通过没有错误提示