boost::text::stream_safe_iterator
// In header: <boost/text/stream_safe.hpp> template<code_point_iter I, std::sentinel_for< I > S = I> struct stream_safe_iterator : public stl_interfaces::iterator_interface< stream_safe_iterator< I, I >, std::bidirectional_iterator_tag, uint32_t, uint32_t > { // types typedef I iterator; typedef S sentinel; typedef stl_interfaces::iterator_interface< stream_safe_iterator< I, S >, std::bidirectional_iterator_tag, uint32_t, uint32_t > base_type; // construct/copy/destruct stream_safe_iterator(); stream_safe_iterator(iterator, sentinel); // public member functions uint32_t operator*() const; constexpr I base() const; stream_safe_iterator & operator++(); stream_safe_iterator & operator--(); };
An iterator that filters out all the non-stream-safe code points from a sequence of code points.
See Also:
https://unicode.org/reports/tr15/#Stream_Safe_Text_Format
stream_safe_iterator
public member functionsuint32_t operator*() const;
constexpr I base() const;
stream_safe_iterator & operator++();
stream_safe_iterator & operator--();