
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.