Since String never throws (thank God!) it seems there is no simple way to know if a UTF conversion was successful. Specifically, if an application reads external data that claims to be in a UTF-encoded format, and that data is malformed, it is impossible to know.
For applications that want to validate external data, it would be handy to have something like
bool CharPointer_Utf8::validate ();
or similar, this way when the application reads in the data it can wrap it up in a CharPointer_UtfXXX, call validate() to see if its legit, and then continue with creating the String, or whatever.