I'm not sure how this line compiled at all with earlier standards on Linux (where char_type is wchar_t). How wchar_t was outputted into char stream?
It produced the integer value before C++20: https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2
So, the patch attached here should work as in earlier standards. Yuriy
diff --git a/src/mathed/MathParser.cpp b/src/mathed/MathParser.cpp index dd43dd9eac..478e906308 100644 --- a/src/mathed/MathParser.cpp +++ b/src/mathed/MathParser.cpp @@ -370,9 +370,9 @@ ostream & operator<<(ostream & os, Token const & t) os << '\\' << to_utf8(cs); } else if (t.cat() == catLetter) - os << t.character(); + os << static_cast<uint32_t>(t.character()); else - os << '[' << t.character() << ',' << t.cat() << ']'; + os << '[' << static_cast<uint32_t>(t.character()) << ',' << t.cat() << ']'; return os; }
-- lyx-devel mailing list lyx-devel@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-devel