我有以下代码:
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)