
Jean-Francois Bastien wrote:
It seems that xpressive's blank isn't matched properly to a space when used with wide strings.
Short answer: you're right. Long answer: blank is an oddball, in that there is no ctype mask for it. The TR1 spec says of the characters matched by blank, "an implementation-defined subset of the characters for which isspace(c, getloc()) returns true, otherwise returns false." So, you really can't rely on using blank in portable programs. Many std libraries have support for blank in the ctype facet anyway. MSVC is not one of them, so I had to fudge it. Looking at the TR1 spec, I see that C++0x is picking up the isblank() and iswblank() functions from C99. It seems to only make sense that ctype and regex should be updated accordingly. (Incidentally, C99 iswblank() in the "C" locale will return true for L' ' and L'\t', false for everything else. Which is what xpressive should do.) I've just fixed this is HEAD. Thanks for the report. You can work around it by using (set=' ','\t'). -- Eric Niebler Boost Consulting www.boost-consulting.com The Astoria Seminar ==> http://www.astoriaseminar.com