我不能理解来自于《C++模板完全指南》第8.3章的代码示例。为什么编译器提示错误?作者说&foo< int >可以是两个不同的类型,为什么呢?
#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;
}