Вывести аргумент шаблона из сигнатуры вызова std :: function
Рассмотрим эту функцию шаблона:
template<typename ReturnT>
ReturnT foo(const std::function<ReturnT ()>& fun)
{
return fun();
}
Почему компилятор не может сделать выводReturnT
из подписи пропущенного вызова?
bool bar() { /* ... */ }
foo<bool>(bar); // works
foo(bar); // error: no matching function call