Iterator which acts as a filter over std::vector::const_iterator (the base_iter) which only passes on TargetRegionVariableShape of the kind specified in Kind.
shape_const_kind_iterator(ShapeKind Kind, base_iter I) Explicitly constructs an iterator from the base_iter- Both the start and end of the iterator will be set to the same paramter I.
Explicitly constructs an iterator from cbegin() and cend() of base_iter.
Use this to construct a begin() from std::vector<>::cbegin() and std::vector<>::cend(). The iterator needs to operate on the base_iter at construction to ensure that a non-empty vector which does not contain elements of the right Kind is handled correctly.