我有以下代码:
template<typename T>
void foo(T, std::vector<T>){}
template<typename T>
void bar(T, std::function<void(T)>){}
int main()
{
foo(0, std::vector<int>{});
bar<int>(0, [](int){});
}
foo
可以在不显式指定模板类型的情况下工作,并且bar
在我未指定以下类型的情况下不起作用:
bar(0, [](int){}); //Compile error: no matching function for call to 'bar(main()::<lambda(int)>)'
foo(0, std::vector<auto>{});
(我知道它不能编译)。有解决方法吗?