Рассмотрим эту шаблонную функцию:
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