// to the list so items end up on list in front-to-back priority
// order
void remove_by_filter(std::function<bool (T&&)> filter_accum) {
- queue.remove_by_req_filter(filter_accum, true);
+ queue.remove_by_req_filter([&] (std::unique_ptr<T>&& r) {
+ return filter_accum(std::move(*r));
+ }, true);
for (auto i = queue_front.rbegin(); i != queue_front.rend(); /* no-inc */) {
if (filter_accum(std::move(i->second))) {
if (out) {
queue.remove_by_client(k,
true,
- [&out] (T&& t) {
- out->push_front(std::move(t));
+ [&out] (std::unique_ptr<T>&& t) {
+ out->push_front(std::move(*t));
});
} else {
queue.remove_by_client(k, true);