Как вы уже заметили, файловый бэкэнд предполагает многобайтовый вывод в многобайтовой сборке и широкий вывод в широкой сборке по умолчанию, но в IIRC есть опции инициализации (для be.file), которые позволяют принудительно выполнить его одним илидругой, независимо от того, как вы строите.
fwiw, я думаю, что примеры должны учитывать все перестановки, и именно поэтому «уродство», о котором вы сообщаете, присутствует.Если вы строите только для одной или другой кодировки, вам не нужно этого делать.Очень похоже на примеры кодирования Windows, которые используют TCHAR и все функции _tcsXXX (): вам не нужно делать это, если вы не хотите, чтобы ваш код работал с обоими.
HTH