我有以下代码:
template<typename T>
void bar(int x, T y)
{
}
void baz(int x, int y)
{
}
template<typename T0, typename T1>
void foo(void k(T0, T1), T1 t)
{
}
int main()
{
foo(baz, 10); // OK
foo(bar, 10); // ERROR
return 0;
}
foo传入时的重载分辨率正常工作baz。但是,当传入函数 templatebar时,编译器无法推断 的模板参数T0,foo即使bar范围内只有一个,并且它的第一个参数完全解析为int。如何编写函数模板以便编译器可以解析foo调用?foo(bar, 10)