We now require C++11 support including `override`. Drop use of
the old compatibility macro. Convert references as follows:
git grep -l CM_OVERRIDE -- '*.h' '*.hxx' '*.cxx' |
xargs sed -i 's/CM_OVERRIDE/override/g'
The previous implementation assumed that only one byte would be given
in the `from` buffer by the caller at a time. This may be true for
MSVC but is not for the GNU library on Windows. Re-implement these
methods to handle more than one byte per call.
Also simplify the state management by keeping all state between calls
directly in the `mbstate_t` argument instead of using it to index our
own heap-allocated state.
Fixes: #16893
Add a `codecvt` class that can be used as facet for locale so that it's
possible to convert from internal UTF-8 encoding to other encodings such
as Windows ANSI codepage.