The sgml_unicode.hpp stores UTF-32 strings in stdex::sgml_unicode_pair::unicode. Hence stdex::utf32_t should be used as its datatype. Unfortunately, that doesn't work with U string literal: U requires hundreds of typecasts to make it fit stdex::utf32_t, since char32_t is signed, stdex::utf32_t is unsigned. OTOH, L string literal cannot be used on Windows (produces UTF-16, not UTF-32). Reported-by: Xcode Signed-off-by: Simon Rozman <simon@rozman.si>