>It is issues like this due to which I gave up on C++. There are so many ways to do something and every way is freaking wrong!
These are mostly unicode or linguistics problems.
These are mostly unicode or linguistics problems.
But there are always dragons. It's strings. The mere assumption that they can be transformed int-by-int, irrespective of encoding, is wrong. As is the assumption that a sensible transformation to lower case without error handling exists.
It should be marked [[deprecated]], yes. There is no good reason to use std::tolower/toupper anywhere - they can neither do unicode properly nor are they anywhere close to efficient for ASCII. And their behavior depends on the process-global locale.