Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2004-02-06 06:46:12


> VC++ will not compile the following code with the
> newest version of the regex library whereas it would
> with the previous version (g++ 3.2.2 does not have a
> problem with it).
>

> It seems that VC++ cannot resolve the difference
> between the enumeration constant and the STL collate
> class. The same error can be produced with the
> following code (or anything like it).
>
> #include <vector>
> using namespace std;
> enum SomeEnum { vector = 0 };
>
> int main (int argc, char **argv) { return 0; }
>
> I cannot think of a good way around this short of
> changing the collate constant name and re-building.
> The examples are boiled down and it would not be
> possible for me to change the order of the includes nor
> would it be easy remove the using delcaration.

I can't rename that constant: we've agreed the use of that name with the C++
committee as part of the regex standardisation proposal. You can get your
code to compile either by:
1) switching to a conforming compiler (both gcc and VC.NET 2003 handle the
code correctly).
2) moving the using namespace std; clause to after the include of the regex
header.

I realise that neither of these may be attractive options for an existing
project, and I've tried to find a workaround, but so far to no avail.

John.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk