constexpr OutIter encode_utf16()

in src/libraries/utf/include/m/utf/encode.h [193:209]


        constexpr OutIter encode_utf16(char32_t ch, OutIter it)
        {
            if ((ch >= 0x110000) || ((ch >= 0xdc00) && (ch <= 0xdfff)))
                throw std::runtime_error("invalid character");

            if (ch < 0x10000)
            {
                *it++ = static_cast<WordT>(ch);
            }
            else
            {
                *it++ = static_cast<WordT>(((ch - 0x10000) / 0x400) + 0xd800);
                *it++ = static_cast<WordT>(((ch - 0x10000) % 0x400) + 0xdc00);
            }

            return it;
        }