这是STL make_heap的函数声明,它期望随机访问迭代器作为参数。
template <class RandomAccessIterator>
void make_heap (RandomAccessIterator first, RandomAccessIterator last); 但当我们称之为:
std::make_heap (v.begin(),v.end());我们没有指定template argument。为什么.?
C++是否自动检测我们在函数调用中传递的数据类型.?
这是implicit type-casting吗?
发布于 2014-12-24 08:45:57
基于函数参数确定模板参数的过程称为模板参数推导。
来自C++标准
14.8.2模板参数扣减
1当引用函数模板专门化时,所有模板参数都应该有值。这些值可以显式指定,或者在某些情况下,可以从使用中推导出来,或者从默认的模板参数中获得。
[例子:
void f(Array<dcomplex>& cv, Array<int>& ci) {
sort(cv); // calls sort(Array<dcomplex>&)
sort(ci); // calls sort(Array<int>&)
}https://stackoverflow.com/questions/27633980
复制相似问题