namespace boost { namespace text { struct allowed_breaks_t; template<typename CPIter, typename CPSentinel, typename Extent, typename CPExtentFunc, typename Subrange = line_break_cp_view<CPIter> > struct forward_line_break_view; template<code_point_iter I> struct line_break_cp_view; template<code_point_iter I> struct line_break_grapheme_view; template<typename CPIter> struct line_break_result; template<typename CPIter, typename CPSentinel, typename Subrange = line_break_cp_view<CPIter> > struct line_break_view; enum line_property; line_property line_prop(uint32_t); template<typename CPIter, typename Sentinel> auto operator==(line_break_result< CPIter > result, Sentinel s); template<typename CPIter> auto operator==(CPIter it, line_break_result< CPIter > result); template<typename CPIter, typename Sentinel> auto operator!=(line_break_result< CPIter > result, Sentinel s); template<typename CPIter, typename Sentinel> auto operator!=(CPIter it, line_break_result< CPIter > result); namespace v1 { template<code_point_iter I, std::sentinel_for< I > S> I prev_hard_line_break(I, I, S); template<code_point_iter I, std::sentinel_for< I > S> bool at_hard_line_break(I, I, S); template<code_point_iter I, std::sentinel_for< I > S> line_break_result< I > prev_allowed_line_break(I, I, S); template<code_point_iter I, std::sentinel_for< I > S> bool at_allowed_line_break(I, I, S); template<code_point_iter I, std::sentinel_for< I > S> I next_hard_line_break(I, S); template<code_point_iter I, std::sentinel_for< I > S> line_break_result< I > next_allowed_line_break(I, S); template<code_point_range R> std::ranges::borrowed_iterator_t< R > prev_hard_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> std::ranges::borrowed_iterator_t< R > next_hard_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> unspecified prev_allowed_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> unspecified next_allowed_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> bool at_hard_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_range R> bool at_allowed_line_break(R &&, std::ranges::iterator_t< R >); template<code_point_iter I, std::sentinel_for< I > S> utf32_view< I > line(I, I, S); template<code_point_range R> unspecified line(R &&, std::ranges::iterator_t< R >); template<code_point_iter I, std::sentinel_for< I > S> line_break_cp_view< I > allowed_line(I, I, S); template<code_point_range R> unspecified allowed_line(R &&, std::ranges::iterator_t< R >); template<code_point_iter I, std::sentinel_for< I > S> unspecified lines(I, S); template<code_point_range R> unspecified lines(R &&); template<code_point_iter I, std::sentinel_for< I > S, typename Extent, line_break_cp_extent_func< I, Extent > ExtentFunc> unspecified lines(I, S, Extent, ExtentFunc &&, bool = true); template<code_point_range R, typename Extent, line_break_cp_extent_func< std::ranges::iterator_t< R >, Extent > ExtentFunc> unspecified lines(R &&, Extent, ExtentFunc, bool = true); template<code_point_iter I, std::sentinel_for< I > S> unspecified lines(I, S, allowed_breaks_t); template<code_point_range R> unspecified lines(R &&, allowed_breaks_t); unspecified lines(allowed_breaks_t); } } }namespace std { namespace ranges { } }