私はまだテンプレートを見つけようとしています。特殊化ルールについて読みましたが、ここで何が起こっているのかわかりません。
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
ここで問題は、int の最初のほうが 2 番目よりも具体的であるのはなぜですか? 少なくともあいまいで、まったく機能しないはずだと思います。