Вывести аргумент шаблона из сигнатуры вызова 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

Ответы на вопрос(3)

Ваш ответ на вопрос