Yes, the regex library needs a traits class that instructs it how to interact with the locale for that character type. In theory you could just use cpp_regex_traits<uchar16>, but that would require that all the std::locale facets are supported for uchar16 (I'm sure that they are not).
If you're prepared to depend upon ICU,
WHat's ICU == I see you?? :) then the current cvs has
(optional) support for 16 and 32-bit Unicode character types, the traits
it's like utf-16, but I replace all the chars above 0xFFFF with '?', so it's utf-16 that doesn't have 4-byte chars.
class design is also rather simplified and better documented, so that would be the best bet if you wanted to define your own minimalist traits
I don't really understand well what's character_traits etc (and how to create them myself), I only wanted that my regex16 would do the same job for chars 0-0x00FF as boost::regex does for 0-0xff, and the rest of the chars (>=0x0100) would be considered non-words (\W) and so that I could only use \xXXXX-\xXXXX notation for their ranges& patterns...
class for uchar16 as well.
John.