Пусть x - любой член базового набора символов источника. 'x' и L'x' являются членами базового набора символов выполнения и набора символов широкого исполнения, соответственно.
Верно ли, что интегральные значения 'x' и L'x' должны быть равны? Похоже, что стандарт не требует этого, что имеет смысл. Можно, по-видимому, использовать EBCDIC в качестве узкой кодировки и Unicode как широкую кодировку.
Верно ли, что std::use_facet<std::ctype<wchar_t>>(std::locale()).widen('x') должно быть равно L'x' в некоторой (или какой-либо) локали? В этом случае имеет смысл потребовать этого, но я не могу найти такое требование и в стандарте. Аналогично, std::use_facet<std::ctype<wchar_t>>(std::locale()).narrow(L'x') совпадает с 'x'?
Если вышеуказанное не верно, то какой из этих
std::wcout << L'x';
std::wcout << ct.widen('x');
должен выводить x? ct является подходящей фасеткой языка.