小编Ede*_*dge的帖子

c ++函数解析选择模板版本而不是普通函数

请考虑以下代码:

#include <iostream>

template<typename T>
void f(T t)
{
  (void)t;
  std::cout << "templated f(T)\n";
}

template<typename T>
void entry(T t)
{
  f(t);
}

void f(double d)
{
  (void)d;
  std::cout << "normal f(double)\n";
}

int main()
{
  double d = 0.0;
  entry(d);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

模板f(T)

我觉得这很令人惊讶,因为我认为普通函数将在任何模板版本上被选中.为什么会这样?

我在玩游戏时注意到的另一件事是:如果我将正常函数放在void f(double)模板void entry(T)化函数之前,代码将调用正常函数,基本上输出:

正常f(双)

因此,我的另一个问题是:为什么订单在这个特定的例子中很重要?

c++ templates resolution function

6
推荐指数
1
解决办法
86
查看次数

标签 统计

c++ ×1

function ×1

resolution ×1

templates ×1