diff --git a/src/polymesh/iterators.hh b/src/polymesh/iterators.hh
index bea068bdae5bcad3bfa12d8c95fdf2091d56784e..5ffc7e18e451ddd5c795de2eb7460d10d916cc95 100644
--- a/src/polymesh/iterators.hh
+++ b/src/polymesh/iterators.hh
@@ -100,7 +100,7 @@ struct attribute_iterator : smart_iterator<attribute_iterator<AttributeT>>
 // ================= FILTER + MAP =================
 
 template <class IteratorT, class PredT>
-struct filtering_iterator final
+struct filtering_iterator final : smart_iterator<filtering_iterator<IteratorT, PredT>>
 {
     IteratorT it;
     PredT pred;