Я бы сказал, что использование std::string
или std::wstring
не имеет значения.
Никто не предлагает надлежащую поддержку Юникода в любом случае.
Если вам нужна интернационализация, вам нужна надлежащая поддержка Unicode, и вам следует начать изучение таких библиотек, как ICU.
После этого все зависит от того, какое кодирование используется, и это зависит от платформы, на которой вы находитесь: оберните зависящие от ОС средства за уровнем абстракции и, при необходимости, преобразуйте в уровень реализации.
Не беспокойтесь о кодировке, используемой внутри библиотеки Unicode, которую вы используете (или build? Hum), это вопрос производительности и не должен влиять на использование самой библиотеки.