https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79511
--- Comment #3 from ww898 <mikhail at pilin dot name> --- Repro: std::wstring_convert<std::codecvt_utf8_utf16<wchar_t, 0x10ffffUL, std::little_endian>> _Conv; std::string _Src("\xEF\xBF\xBF"); auto const _Dst = _Conv.from_bytes(&*_Src.begin(), &*_Src.end()); if (_Dst.size() == 2) std::cout << std::hex << (unsigned)_Dst[0] << ":" << (unsigned)_Dst[1] << std::endl; else std::cout << std::hex << (unsigned)_Dst[0] << std::endl; Error is when _Dst.size() == 2.