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命名。

相关文章:
  • 没有找到相关文章