
Miro Jurisic <macdev@meeroh.org> writes:
In article <8765c5yl77.fsf@jbms.ath.cx>, Jeremy Maitin-Shepard <jbms@attbi.com> wrote:
The IBM International Components for Unicode (ICU) library (http://oss.software.ibm.com/icu/) is an existing C++ library with what appears to be a Boost-compatible license, which provides all or most of the Unicode support that would be desired in Boost or the C++ standard library, in addition to Unicode-equivalents of libraries already either in the standard library or in Boost, including number/currency formatting, date formatting, message formatting, and a regular expression library. Unfortunately, it does not use C++ exceptions to signal exceptional conditions (but rather it uses an error code return mechanism), it does not follow Boost naming conventions, and although there are some C++-specific facilities, most of the C++ API is the same as the C API, thus resulting in a less-than-optimal C++ interface.
I don't agree with the statement that ICU "provides all or most of the Unicode support that would be desired in Boost or the C++ standard library", based on the fact that ICU does not use exceptions and does not provide STL iterator access to Unicode strings (as far as I know). To me this means that a new library is needed (its implementation can be based on ICU, linked to ICU, etc) or a substantial change to ICU is needed. My preference lies with a boost library that leverages ICU as much as possible without compromising any of the features that I would consider critical for a boost Unicode library.
Regardless of your interpretation of that statement, I think we agree on this issue: ICU provides the desired Unicode facilities, but its C++ interface is not satisfactory. -- Jeremy Maitin-Shepard