namespace boost { namespace text { enum grapheme_property; grapheme_property grapheme_prop(uint32_t); namespace v1 { template<code_point_iter I, std::sentinel_for< I > S> I prev_grapheme_break(I, I, S); template<code_point_iter I, std::sentinel_for< I > S> I next_grapheme_break(I, S); template<code_point_range R> std::ranges::borrowed_iterator_t< R > prev_grapheme_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> std::ranges::borrowed_iterator_t< R > next_grapheme_break(R &&, std::ranges::iterator_t< R >); template<code_point_iter I, std::sentinel_for< I > S> bool at_grapheme_break(I, I, S); template<code_point_range R> bool at_grapheme_break(R &&, std::ranges::iterator_t< R >); } } }