diff --git a/src/lib/itertools.hpp b/src/lib/itertools.hpp index 967d77f87..47b91f797 100644 --- a/src/lib/itertools.hpp +++ b/src/lib/itertools.hpp @@ -366,6 +366,13 @@ namespace lib { typedef FilterCore _Filter; typedef typename _Filter::Val Val; + void + reEvaluate() + { + this->core_.cached_ = false; + this->hasData(); // re-evaluate head element + } + public: ExtensibleFilterIter() { } @@ -374,6 +381,7 @@ namespace lib { : FilterIter(src, initialFilterPredicate) { } + template ExtensibleFilterIter& andFilter (COND conjunctiveClause) @@ -385,6 +393,7 @@ namespace lib { return filter(val) and conjunctiveClause(val); }; + reEvaluate(); return *this; } };