我仍在尝试找出模板。我已阅读有关专业化规则的信息,但不明白这里发生了什么。
我在templates.h中定义了以下内容:
#include <iostream>
template <typename foo>
void f(foo p)
{
std::cout << "one" << std::endl;
}
template <typename bar>
void f(int p)
{
std::cout << "two" << std::endl;
}
现在,如果我包含这个并像这样在我的主目录中调用它
f(1);
f("x");
我明白了
one
one
现在的问题是,为什么第一个比第二个更具体?我觉得它至少应该是模棱两可的,根本不起作用。