diff --git a/libs/global/krita_container_utils.h b/libs/global/krita_container_utils.h index f303411..6d1ca96 100644 --- a/libs/global/krita_container_utils.h +++ b/libs/global/krita_container_utils.h @@ -46,10 +46,11 @@ template } -template - void filterContainer(C &container, std::function keepIf) { +template + auto filterContainer(C &container, KeepIfFunction keepIf) + -> decltype(bool(keepIf(container[0])), void()) { - auto newEnd = std::remove_if(container.begin(), container.end(), std::unary_negate(keepIf)); + auto newEnd = std::remove_if(container.begin(), container.end(), [keepIf] (typename C::reference p) { return !keepIf(p); }); while (newEnd != container.end()) { newEnd = container.erase(newEnd); }