返回信息流已知下面 sum()的模板定义
template <class T1, class T2, class T3>
T1 sum( T2, T3 );
下列哪些调用是错误的 为什么
double dobj1, dobj2;
float fobj1, fobj2;
char cobj1, cobj2;
(a) sum( dobj1, dobj2 );
(b) sum<double,double,double>( fobj1, fobj2 );
(c) sum<int>( cobj1, cobj2 );
(d) sum<double, ,double>( fobj2, dobj2 );
最好解释下原因,谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #30089同步于 2009/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于模板
joee
2009/10/20镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
VC2003测试了一下(可能不标准)
(a) sum( dobj1, dobj2 ); 不对。编译器不知道从何演绎T1。
(b) sum<double,double,double>( fobj1, fobj2 ); 正确。
(c) sum<int>( cobj1, cobj2 ); 正确。编译器生成了sum<int,char,char>()。
(d) sum<double, ,double>( fobj2, dobj2 ); 不对。VC报语法错误,应该是指能从前向后缺省,不能中间缺一个。
【 在 joee 的大作中提到: 】
: 已知下面 sum()的模板定义
: template <class T1, class T2, class T3>
: T1 sum( T2, T3 );
: ...................