加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用模板与函数的好处以及如何在模板中推断类型

发布时间:2020-12-16 07:13:07 所属栏目:百科 来源:网络整理
导读:我已经阅读了很多关于推导变量类型的帖子,两者都使用auto和without.我想我有两个问题. 让我们以一个简单的范围函数为例.我可以把它作为模板并调用它: template class T,T min,T max bool inRange(T value) { return min = value value = max;}bool bbb = in
我已经阅读了很多关于推导变量类型的帖子,两者都使用auto和without.我想我有两个问题.

让我们以一个简单的范围函数为例.我可以把它作为模板并调用它:

template <class T,T min,T max> bool inRange(T value) {
   return min <= value && value <= max;
}

bool bbb = inRange<int,5,10>(7);

或者我能做到:

template <class T> bool inRange(T min,T max,T value) {
    return min <= value && value <= max;
}

bool bbb = inRange(5,10,7);

问题:

>是否有一种方法(缺少为short,int,long,double等创建多个模板1),可以推导出类型,以便可以使用inRange< min,max>(value)调用模板
>对于inRange(min,max,value)inRange< min,max>(value)是否有任何优势

解决方法

>目前不是.有人建议将其添加到C: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4469.html的未来版本中 >第一种方法inRange< T,min,max>(value)相当尴尬,因为我们还没有实现上述提议,也无法写入inRange< min,max>(value).如果在编译时不知道min和max,那么第二种方法inRange(min,value)无论如何都是你唯一的选择.第二类内联函数应该与第一类内联函数一样有效,因此很少有任何优势.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读