LINUX.ORG.RU

История изменений

Исправление 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), ......) себе.