4
「C++ Templates The Complete Guide」の8.3章から抜粋したコード例を理解できません。なぜコンパイラはエラーについて言いますか?著者は、& foo < int>は2つの異なるタイプのうちの1つであると言います、なぜですか?テンプレート関数のあいまいな呼び出しを避けるには?
#include <iostream>
template <typename T>
void single(T x)
{
// do nothing
}
template <typename T>
void foo(T t)
{
std::cout << "Value" << std::endl;
}
template <typename T>
void foo(T* t)
{
std::cout << "Pointer" << std::endl;
}
template <typename Func, typename T>
void apply(Func func, T x)
{
func(x);
}
int main()
{
apply(&foo<int>, 7);
int i = 0;
std::cin >> i;
}