From: Eric Niebler (eric_at_[hidden])
Date: 2007-06-29 11:49:36
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk