Вывести аргумент шаблона из сигнатуры вызова 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
13
задан Deduplicator 21 October 2018 в 23:53
поделиться