История изменений
Исправление pon4ik, (текущая версия) :
bool process_tasks(DeadlineT& when) {
auto now = std::chrono::high_resolution_clock::now();
auto minimum = now;
auto erase = std::remove_if(tasks_.begin(), tasks_.end(),
[&now, &minimum](auto& task) -> bool {
if (task.deadline_ <= now) {
auto reschedule_to = task.trigger_();
if (reschedule_to == MicrosecondsT(0)) {
return true;
} else {
task.deadline_ = now + reschedule_to;
}
}
minimum = std::min(task.deadline_, minimum);
return false;
});
tasks_.erase(erase, tasks_.end());
when = minimum;
return !tasks_.empty();
Исходная версия pon4ik, :
bool process_tasks(DeadlineT& when) {
auto now = std::chrono::high_resolution_clock::now();
auto minimum = now;
auto erase = std::remove_if(tasks_.begin(), tasks_.end(),
[&now, &minimum](auto& task) -> bool {
if (task.deadline_ <= now) {
auto reschedule_to = task.trigger_();
if (reschedule_to == MicrosecondsT(0)) {
return true;
} else {
task.deadline_ = now + reschedule_to;
}
}
minimum = std::min(task.deadline_, minimum);
return false;
});
tasks_.erase(erase, tasks_.end());
when = minimum;
return !tasks_.empty();
[\code]