История изменений
Исправление Siborgium, (текущая версия) :
Но проблема с дефаултным значением, что оно его проверять не хочет, т.е. if (task) ругается.
В одной перегрузке значение всегда есть, в другой его всегда нет и используется дефолтное. Зачем там if?
Так ее же все равно нужно через параметр функции передавать, т.е. оно все равно в стеке размещается.
Делай хорошо, плохо само получится.
Хотя нужно будет попробовать function прописать сразу в параметр шаблона, вдруг разберет что куда.
Зачем «вдруг», если можно сделать нормально? Если сильно хочется ограничений, допиши static_assert(std::is_same_t<std::invoke_result<decltype(task), ......)
себе.
Исходная версия Siborgium, :
Но проблема с дефаултным значением, что оно его проверять не хочет, т.е. if (task) ругается.
В одной перегрузке значение всегда есть, в другой его всегда нет и используется дефолтное. Зачем там if?
Так ее же все равно нужно через параметр функции передавать, т.е. оно все равно в стеке размещается.
Делай хорошо, плохо само получится.
Хотя нужно будет попробовать function прописать сразу в параметр шаблона, вдруг разберет что куда.
Зачем «вдруг», если можно сделать нормально? Если сильно хочется ограничений, допиши static_assert(std::is_same_t<std::invoke_result<decltype(F), ......)
себе.