Нашел багу в своей программе, смог свести к такому минимальному семплу:
wifstream in("test_utf16", ios::binary);
in.imbue(locale(in.getloc(), new codecvt_utf16<wchar_t, 0x10ffff>()));
wstringstream wss;
wss << in.rdbuf();
auto ret = wss.str();
$ file test_utf16
test_utf16: Little-endian UTF-16 Unicode text, with no line terminators
$ cat test_utf16
ÿþ?@825B // это "привет"