These new classes look great! But if juce_wchar is a 16-bit value (under Windows only I believe) then functions like
juce_wchar CharPointer_UTF16::operator*() const throw();
will incorrectly decode Unicode code points that decode to values greater than 0xffff. Unless this is just a transition on the way to a final API, Windows is going to get the “short” end of the stick. Unless you set juce_wchar to uint32 somewhere in a header I didn’t see.