首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有指定模板参数,但仍然有效。

没有指定模板参数,但仍然有效。
EN

Stack Overflow用户
提问于 2014-12-24 08:40:00
回答 1查看 88关注 0票数 1

这是STL make_heap的函数声明,它期望随机访问迭代器作为参数。

代码语言:javascript
复制
template <class RandomAccessIterator>
    void make_heap (RandomAccessIterator first, RandomAccessIterator last); 

但当我们称之为:

代码语言:javascript
复制
 std::make_heap (v.begin(),v.end());

我们没有指定template argument。为什么.?

C++是否自动检测我们在函数调用中传递的数据类型.?

这是implicit type-casting吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-24 08:45:57

基于函数参数确定模板参数的过程称为模板参数推导。

来自C++标准

14.8.2模板参数扣减

1当引用函数模板专门化时,所有模板参数都应该有值。这些值可以显式指定,或者在某些情况下,可以从使用中推导出来,或者从默认的模板参数中获得。

[例子:

代码语言:javascript
复制
void f(Array<dcomplex>& cv, Array<int>& ci) {
sort(cv); // calls sort(Array<dcomplex>&)
sort(ci); // calls sort(Array<int>&)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27633980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档