C++模板隐式使用
C++ templates implicitly use
本文关键字:C++ 更新时间:2023-10-16
我定义了这样的函数:
template<typename T>
void SwapMe(T *first, T *second)
{
T tmp = *first;
*first = *second;
*second = tmp;
}
然后像这样使用它:
SwapMe(&data[i], &data[j]);
如您所见,我没有明确使用SwapMe<T>(...);
但它确实有效!
为什么C++标准允许避免明确指定参数的类型?
必要的T
可以从*first
的类型中推断出来。
仅当编译器无法自动进行推导时,才需要由程序员显式指定。
这种(看似简单但实际上相当复杂)现象被称为参数依赖名称查找或Koenig查找,以其发明者Andrew Koenig命名。
相关文章:
- 没有找到相关文章