
Just some thoughts about design.
What is the format of string which specify encoding such as "windows-936"? Does it have to be string rather than, say, enum?
I've mensioned it before and the response actually exists in the summary of the review. Also in this case the encoding is defined only once when the locale object is created so there is no performance issues. The second point is that a. Support of different encodings depends on specific backend and may be changed as new version of ICU or iconv is released, so no need to provide a enum b. Concept of numeric codepages is something windows specific. All other APIs around use string to represent the encoding.
Why there is no "translate" that takes string of char16_t or char32_t?
Of course, char16_t/char32_t there for compilers that support them. I didn't show all possible interfaces just an examples.
Although I think it will take years other compilers support C++0x's new encoding prefixes.
Not a single compiler I tested (MSVC10 Intel, GCC-4.6, SunCC) support C++0x characters properly so it will take a time. Artyom