这样的模版vc下是不是不能通过编译?

djs36 2004-12-26 11:14:37
template <typename 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;
}
...全文
211 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandrowjw 2004-12-27
  • 打赏
  • 举报
回复
标准里函数模板是不支持缺省参数的
zhengwei1984222 2004-12-27
  • 打赏
  • 举报
回复
呵呵楼主代码出现这个错误,有趣
error C2265: '<Unknown>' : reference to a zero-sized array is illegal
zhengwei1984222 2004-12-27
  • 打赏
  • 举报
回复
不过是不是c++标准还不肯定!
手头没。net
大家看看这段代码在net中有warning没?
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
template <typename T = int,int MAXSIZE = 100>
void add(T* det)
{
T temp = *det;
cout<<T(temp+MAXSIZE);
}

void main()
{
int a =100;
add(&a);
}
zhengwei1984222 2004-12-27
  • 打赏
  • 举报
回复
的确,vc6。0中不支持函数模板使用缺省参数
warning C4519: default template arguments are only allowed on a class template; ignored
aming46 2004-12-27
  • 打赏
  • 举报
回复
恩,我也是用 .net的 编译是没有问题,但是怎么使用楼主所写的那个函数呢?我就是不会调用,所以才换了一种申明。那个错误也就是在我错误的调用了那个函数发生的。

没有必要去讨论vc6的支持问题,他的确支持得挺差。。。。。。。
aming46 2004-12-26
  • 打赏
  • 举报
回复
........

上面两位编译通过了么??解释一下吧!

我这里是编译不通过的,“error C2784: “Type min(Type (&)[size])” : 未能推导出“T1 (&)[size]”(从“int”中)的模板参数”

我把函数申明改成这样了。。。。。可以,但是味道变了,还是请高手来吧。。。。
template <typename Type>
Type min( Type* r_array,int size)
xuzheng318 2004-12-26
  • 打赏
  • 举报
回复
vc2003.net 编译通过!
fatalerror99 2004-12-26
  • 打赏
  • 举报
回复
以上代码在 VC 2003 和 Dev-C++ 中均顺利通过编译。
djs36 2004-12-26
  • 打赏
  • 举报
回复
那我应该怎么修改?
北极猩猩 2004-12-26
  • 打赏
  • 举报
回复
在哪里都不行,C++标准理不支持函数模板使用费类型参数
sandrowjw 2004-12-26
  • 打赏
  • 举报
回复
果然不行,就是不支持那个整数参数
sandrowjw 2004-12-26
  • 打赏
  • 举报
回复
不行吗?普通的函数模板是可以的吧。
fatalerror99 2004-12-26
  • 打赏
  • 举报
回复
大家搞搞清楚,VC6 是98年的产品了,当年,它在与它同期的 C++ 开发环境中还算不错的,只是多年没有升级而以。
如今经过 VC 2002,直到 VC 2003,如果还抱着 VC 6 不放,还说不好,就有点别有用心了吧。

想问一下,还有没有人用 Windows 98?估计不会有了吧,同期的 VC 6 为什么就不肯扔掉呢?
uframer 2004-12-26
  • 打赏
  • 举报
回复
这又不是什么新闻,对标准支持最好的应该是vc2003和intel8.0,vc6对标准支持之差是出了名的
sandrowjw 2004-12-26
  • 打赏
  • 举报
回复
看来又是VC6一大罪状阿
北极猩猩 2004-12-26
  • 打赏
  • 举报
回复
不好意思,记错了,函数模板是可以有非类型参数的,不过函数模板不能有缺省参数
fatalerror99 2004-12-26
  • 打赏
  • 举报
回复
楼上用的是那个版本,在 VC 2003 下才可以编译通过,VC 6 可能不行。

在《C++ 程序设计语言》中有这样一段叙述:

模板可以有类型参数,可以有常规类型的参数如 int,还可以有模板参数。自然,一个模板可以有多个参数。例如,
template<class T, T def_val> class Cont { /*...*/ };
如上所示,一个模板参数可以用于定义跟随其后的模板参数。
整数参数常常给用于提供大小或者界限。例如,
template<class T, int i> class Buffer {
......

所以,楼主的程序是符合 C++ 标准的,至于是否能通过编译,只与编译器是否支持有关。

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧