В соответствии со стандартом С++ (§30.7.5.2.4 проекта С++ 17 draft (N4659)) out << ch не будет выполнять расширяющуюся операцию на ch, если ch является char и out - это std::ostream.
Означает ли это, что std::ctype<char>::widen() (т.е. char → char) гарантируется стандартом как тождественная функция (widen(ch) == ch) для всех символов в наборе основных исходных символов?
Если это так, означает ли это, в свою очередь, что все локали требуются стандартом для использования одного и того же неширокого (или многобайтового) кодирования символов из базового набора символов источника?
Если нет, кажется, что out << 'x', с определенным выбором кодировки символов для литералов, может не работать во всех локалях, даже если он работает в некоторых. То есть, не может быть выбора символьного кодирования букв, так что out << 'x' работает во всех локалях одновременно.