函数模板的显示实参问题

匚匚 2011-09-17 08:49:27


#include <iostream>

template <int N=1,typename T>
class Compare
{
public:
inline bool operator()(const T& a,const T& b)const;
};

template <int N,typename T>
bool Compare<N,T>::operator()(const T& a,const T& b)const
{
if(N > 0) return a > b;
if(N < 0) return a < b;
return a == b;
}
int main()
{
int a=18;
int b=10;
if(Compare<>()(a,b))
/* 此处的模板实参为什么不能省略?第一个是默参,第二个可通过函数实参推导?只写第一个也不行,必须全写出才能正确*/
std::cout<<"a > b"<<std::endl;
return 0;
}

...全文
165 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-09-17
  • 打赏
  • 举报
回复
再次穿越
luciferisnotsatan 2011-09-17
  • 打赏
  • 举报
回复
lz怎么发了这么多帖子?
匚匚 2011-09-17
  • 打赏
  • 举报
回复
穿越了,发到C版了
limang89 2011-09-17
  • 打赏
  • 举报
回复
默认 只能默认后面的参数。。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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