namespace boost { namespace text { template<typename CPIter> struct bidirectional_cp_subrange; template<typename CPIter> struct bidirectional_grapheme_subrange; template<typename CPIter, typename Sentinel, typename ResultType, typename NextLineBreakFunc = detail::bidi_next_hard_line_break_callable> struct lazy_bidi_segment_range; bidi_property bidi_prop(uint32_t); namespace v1 { template<code_point_iter I, std::sentinel_for< I > S> unspecified bidirectional_subranges(I, S, int = -1); template<code_point_range R> unspecified bidirectional_subranges(R &&, int = -1); template<grapheme_range R> unspecified bidirectional_subranges(int); template<code_point_iter I, std::sentinel_for< I > S, typename Extent, line_break_cp_extent_func< I, Extent > Func> unspecified bidirectional_subranges(I, S, Extent, Func, int = -1, bool = true); template<code_point_range R, typename Extent, line_break_cp_extent_func< std::ranges::iterator_t< R >, Extent > Func> unspecified bidirectional_subranges(R &&, Extent, Func, int = -1, bool = true); template<typename Extent, typename Func> unspecified bidirectional_subranges(Extent, Func, int = -1, bool = true); } } }namespace std { namespace ranges { } }