метод вариативного шаблона и std::функция - ошибка компиляции


This question already has an answer here:

Я уверен, что ошибки очень простой и глупый, но я не вижу ни одного. Вот код:

#include <future>template <typename ResultType>class Foo{public:    template <typename ...Args>    void exec(const std::function<ResultType(Args...)>& task, Args&&... args) {}};int main(){   Foo<void>().exec([](){});   return 0;}

И вот ошибка:

'void CAsyncTask::exec(const std::function &,Args &&...)' : could not deduce template argument for 'const std::function &' with [ ResultType=void ]

Foo<void>().exec<void>([](){})Args

не работает (и я бы предпочел не иметь, чтобы указать типы вручную).

CAsyncTask<void>().exec(std::function<void ()>([](){}));

Обновление относительно предложенных ответ: следующий код действительно работает.

Но неужели нет решения этой проблемы? Можно ли как-то расширить мой шаблон, чтобы вывести аргументы лямда?