BOOST_TEXT_USE_SIMD
namespace boost { namespace text { template<typename Range> struct utf_range_like_iterator; template<typename T> struct utf_range_like_iterator<T *>; template<std::size_t N, typename T> struct utf_range_like_iterator<T(&)[N]>; template<std::size_t N, typename T> struct utf_range_like_iterator<T[N]>; typedef typename utf_range_like_iterator< Range >::type utf_range_like_iterator_t; typedef in_out_result< Iter, OutIter > transcode_result; namespace v1 { template<std::input_iterator I, std::sentinel_for< I > S, std::output_iterator< uint8_t > O> transcode_result< I, O > transcode_to_utf8(I, S, O); template<typename Ptr, std::output_iterator< uint8_t > O> transcode_result< Ptr, O > transcode_to_utf8(Ptr, O); template<std::size_t N, typename Char, std::output_iterator< uint8_t > O> transcode_result< Char *, O > transcode_to_utf8(Char(&), O); template<std::ranges::input_range R, std::output_iterator< uint8_t > O> transcode_result< std::ranges::borrowed_iterator_t< R >, O > transcode_to_utf8(R &&, O); template<std::input_iterator I, std::sentinel_for< I > S, std::output_iterator< uint16_t > O> transcode_result< I, O > transcode_to_utf16(I, S, O); template<typename Ptr, std::output_iterator< uint16_t > O> transcode_result< Ptr, O > transcode_to_utf16(Ptr, O); template<std::size_t N, typename Char, std::output_iterator< uint16_t > O> transcode_result< Char *, O > transcode_to_utf16(Char(&), O); template<std::ranges::input_range R, std::output_iterator< uint16_t > O> transcode_result< std::ranges::borrowed_iterator_t< R >, O > transcode_to_utf16(R &&, O); template<std::input_iterator I, std::sentinel_for< I > S, std::output_iterator< uint32_t > O> transcode_result< I, O > transcode_to_utf32(I, S, O); template<typename Ptr, std::output_iterator< uint32_t > O> transcode_result< Ptr, O > transcode_to_utf32(Ptr, O); template<std::size_t N, typename Char, std::output_iterator< uint32_t > O> transcode_result< Char *, O > transcode_to_utf32(Char(&), O); template<std::ranges::input_range R, std::output_iterator< uint32_t > O> transcode_result< std::ranges::borrowed_iterator_t< R >, O > transcode_to_utf32(R &&, O); template<typename Iter, typename Sentinel, typename OutIter> transcode_result< Iter, OutIter > transcode_to_utf8(Iter first, Sentinel last, OutIter out); template<typename Range, typename OutIter> transcode_result< utf_range_like_iterator_t< Range >, OutIter > transcode_to_utf8(Range && r, OutIter out); template<typename Iter, typename Sentinel, typename OutIter> transcode_result< Iter, OutIter > transcode_to_utf16(Iter first, Sentinel last, OutIter out); template<typename Range, typename OutIter> transcode_result< utf_range_like_iterator_t< Range >, OutIter > transcode_to_utf16(Range && r, OutIter out); template<typename Iter, typename Sentinel, typename OutIter> transcode_result< Iter, OutIter > transcode_to_utf32(Iter first, Sentinel last, OutIter out); template<typename Range, typename OutIter> transcode_result< utf_range_like_iterator_t< Range >, OutIter > transcode_to_utf32(Range && r, OutIter out); } } }