namespace boost { namespace text { struct null_sentinel_t; struct throw_logic_error; struct use_replacement_character; template<typename Cont> struct utf_16_to_32_back_insert_iterator; template<typename Cont> struct utf_16_to_32_front_insert_iterator; template<typename Cont> struct utf_16_to_32_insert_iterator; template<utf16_iter I, std::sentinel_for< I > S = I, transcoding_error_handler ErrorHandler = use_replacement_character> struct utf_16_to_32_iterator; template<std::output_iterator< uint32_t > Iter> struct utf_16_to_32_out_iterator; template<typename Cont> struct utf_16_to_8_back_insert_iterator; template<typename Cont> struct utf_16_to_8_front_insert_iterator; template<typename Cont> struct utf_16_to_8_insert_iterator; template<utf16_iter I, std::sentinel_for< I > S = I, transcoding_error_handler ErrorHandler = use_replacement_character> struct utf_16_to_8_iterator; template<std::output_iterator< uint8_t > Iter> struct utf_16_to_8_out_iterator; template<typename Cont> struct utf_32_to_16_back_insert_iterator; template<typename Cont> struct utf_32_to_16_front_insert_iterator; template<typename Cont> struct utf_32_to_16_insert_iterator; template<utf32_iter I, std::sentinel_for< I > S = I, transcoding_error_handler ErrorHandler = use_replacement_character> struct utf_32_to_16_iterator; template<std::output_iterator< uint16_t > Iter> struct utf_32_to_16_out_iterator; template<typename Cont> struct utf_32_to_8_back_insert_iterator; template<typename Cont> struct utf_32_to_8_front_insert_iterator; template<typename Cont> struct utf_32_to_8_insert_iterator; template<utf32_iter I, std::sentinel_for< I > S = I, transcoding_error_handler ErrorHandler = use_replacement_character> struct utf_32_to_8_iterator; template<std::output_iterator< uint8_t > Iter> struct utf_32_to_8_out_iterator; template<typename Cont> struct utf_8_to_16_back_insert_iterator; template<typename Cont> struct utf_8_to_16_front_insert_iterator; template<typename Cont> struct utf_8_to_16_insert_iterator; template<utf8_iter I, std::sentinel_for< I > S, transcoding_error_handler ErrorHandler> struct utf_8_to_16_iterator; template<std::output_iterator< uint16_t > Iter> struct utf_8_to_16_out_iterator; template<typename Cont> struct utf_8_to_32_back_insert_iterator; template<typename Cont> struct utf_8_to_32_front_insert_iterator; template<typename Cont> struct utf_8_to_32_insert_iterator; template<utf8_iter I, std::sentinel_for< I > S = I, transcoding_error_handler ErrorHandler = use_replacement_character> struct utf_8_to_32_iterator; template<std::output_iterator< uint32_t > Iter> struct utf_8_to_32_out_iterator; constexpr uint32_t replacement_character(); constexpr bool surrogate(uint32_t); constexpr bool high_surrogate(uint32_t); constexpr bool low_surrogate(uint32_t); constexpr bool reserved_noncharacter(uint32_t); constexpr bool scalar_value(uint32_t); constexpr bool unreserved_scalar_value(uint32_t); constexpr bool lead_code_unit(unsigned char); constexpr bool continuation(unsigned char); constexpr int utf8_code_units(unsigned char); constexpr int utf16_code_units(uint16_t); template<typename T> constexpr auto operator==(T * p, null_sentinel_t); template<typename T> constexpr auto operator!=(T * p, null_sentinel_t); template<typename T> constexpr auto operator==(null_sentinel_t, T * p); template<typename T> constexpr auto operator!=(null_sentinel_t, T * p); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_32_to_8_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_32_to_8_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_32_to_8_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_32_to_8_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_32_to_8_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_32_to_8_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_32_to_8_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_32_to_8_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_8_to_32_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_8_to_32_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_8_to_32_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_8_to_32_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_8_to_32_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_8_to_32_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_8_to_32_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_8_to_32_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_32_to_16_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_32_to_16_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_32_to_16_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_32_to_16_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_32_to_16_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_32_to_16_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_32_to_16_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_32_to_16_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_16_to_32_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_16_to_32_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_16_to_32_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_16_to_32_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_16_to_32_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_16_to_32_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_16_to_32_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_16_to_32_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_16_to_8_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_16_to_8_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_16_to_8_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_16_to_8_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_16_to_8_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_16_to_8_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_16_to_8_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_16_to_8_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(utf_8_to_16_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator==(Sentinel lhs, utf_8_to_16_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(utf_8_to_16_iterator< Iter, Sentinel, ErrorHandler > const & lhs, Sentinel rhs); template<typename Iter, typename Sentinel, typename ErrorHandler> constexpr auto operator!=(Sentinel lhs, utf_8_to_16_iterator< Iter, Sentinel, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator==(utf_8_to_16_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_8_to_16_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); template<typename Iter1, typename Sentinel1, typename Iter2, typename Sentinel2, typename ErrorHandler> constexpr auto operator!=(utf_8_to_16_iterator< Iter1, Sentinel1, ErrorHandler > const & lhs, utf_8_to_16_iterator< Iter2, Sentinel2, ErrorHandler > const & rhs); namespace v1 { template<utf8_iter I> constexpr I find_invalid_encoding(I, I); template<utf8_iter I> constexpr bool encoded(I, I); template<utf8_iter I> constexpr bool starts_encoded(I, I); template<utf8_iter I> constexpr bool ends_encoded(I, I); template<typename Iter> unspecified find_invalid_encoding(Iter first, Iter last); template<typename Iter> unspecified find_invalid_encoding(Iter first, Iter last); template<typename Iter> unspecified encoded(Iter first, Iter last); template<typename Iter> unspecified encoded(Iter first, Iter last); template<typename Iter> unspecified starts_encoded(Iter first, Iter last); template<typename Iter> unspecified starts_encoded(Iter first, Iter last); template<typename Iter> unspecified ends_encoded(Iter first, Iter last); template<typename Iter> unspecified ends_encoded(Iter first, Iter last); template<std::output_iterator< uint8_t > O> utf_32_to_8_out_iterator< O > utf_32_to_8_out(O); template<std::output_iterator< uint32_t > O> utf_8_to_32_out_iterator< O > utf_8_to_32_out(O); template<std::output_iterator< uint16_t > O> utf_32_to_16_out_iterator< O > utf_32_to_16_out(O); template<std::output_iterator< uint32_t > O> utf_16_to_32_out_iterator< O > utf_16_to_32_out(O); template<std::output_iterator< uint8_t > O> utf_16_to_8_out_iterator< O > utf_16_to_8_out(O); template<std::output_iterator< uint16_t > O> utf_8_to_16_out_iterator< O > utf_8_to_16_out(O); template<std::bidirectional_iterator I, std::sentinel_for< I > S> auto utf8_iterator(I, I, S); template<std::bidirectional_iterator I, std::sentinel_for< I > S> auto utf16_iterator(I, I, S); template<std::bidirectional_iterator I, std::sentinel_for< I > S> auto utf32_iterator(I, I, S); template<typename Cont> auto from_utf8_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf16_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf32_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf8_back_inserter(Cont &); template<typename Cont> auto from_utf16_back_inserter(Cont &); template<typename Cont> auto from_utf32_back_inserter(Cont &); template<typename Cont> auto from_utf8_front_inserter(Cont &); template<typename Cont> auto from_utf16_front_inserter(Cont &); template<typename Cont> auto from_utf32_front_inserter(Cont &); template<typename Iter> utf_32_to_8_out_iterator< Iter > utf_32_to_8_out(Iter it); template<typename Iter> utf_8_to_32_out_iterator< Iter > utf_8_to_32_out(Iter it); template<typename Iter> utf_32_to_16_out_iterator< Iter > utf_32_to_16_out(Iter it); template<typename Iter> utf_16_to_32_out_iterator< Iter > utf_16_to_32_out(Iter it); template<typename Iter> utf_16_to_8_out_iterator< Iter > utf_16_to_8_out(Iter it); template<typename Iter> utf_8_to_16_out_iterator< Iter > utf_8_to_16_out(Iter it); template<typename Iter, typename Sentinel> auto utf8_iterator(Iter first, Iter it, Sentinel last); template<typename Iter, typename Sentinel> auto utf16_iterator(Iter first, Iter it, Sentinel last); template<typename Iter, typename Sentinel> auto utf32_iterator(Iter first, Iter it, Sentinel last); template<typename Cont> auto from_utf8_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf16_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf32_inserter(Cont &, typename Cont::iterator); template<typename Cont> auto from_utf8_back_inserter(Cont &); template<typename Cont> auto from_utf16_back_inserter(Cont &); template<typename Cont> auto from_utf32_back_inserter(Cont &); template<typename Cont> auto from_utf8_front_inserter(Cont &); template<typename Cont> auto from_utf16_front_inserter(Cont &); template<typename Cont> auto from_utf32_front_inserter(Cont &); } } }