On Dec 6, 2013, at 21:26, Geoffrey Odhner wrote:

> On 6 Dec 2013, at 2:59, Ryan Schmidt wrote:
> 
>> I’d also ask if you really need to use gcc. Could you use clang instead?
> 
> I also tried your suggestion of using clang.  I installed the MacPorts port 
> of clang-3.4, which compiled my program fine, but when I ran it, it gave 
> exceptions on regexes that it shouldn't!  I have a regex std::regex 
> phone_("\\PHONE ?"), and I learned that their regular expression engine is 
> very much more particular about adhering to the ECMA standard in its parsing 
> of regular expressions, but because the standard doesn't explicitly require 
> it, they don't support matching of backslashes, even when they are specified 
> using hex escape sequences.  This is really a problem!  How can they not 
> support matching against a specific character?  Well, that's why I need to go 
> back to GCC for now.  I always seem to run into the issues with compilers.  
> Thanks again for your help.

I see!

I actually meant the clang that comes with Xcode, but if the bleeding-edge 
clang-3.4 didn’t work for this, then Xcode’s version probably won’t either.

More Googling informs me that this std::regex thing is brand new in gcc. They 
had an incomplete version in gcc48, based on earlier c++0x standards, and have 
now completed the full c++11 version in what will become gcc49. More Googling 
says clang’s regex implementation should be up to the c++11 standard, but if as 
you say the behavior you’re looking for is not defined by the standard, then 
it’s understandable if it doesn’t support it. Seems like a strange omission 
from the standard though. I use regular expressions constantly; I can’t imagine 
being told there is no way to match one specific character.

The reason I suggest using clang if possible is that with 10.9, OS X has 
switched its C++ library from libstdc++ to libc++ and you cannot mix C++ code 
compiled with one with C++ code compiled with the other. So if you ever want to 
link with C++ libraries in MacPorts, you’ll have to be compiled with libc++ on 
Mavericks, and that means using clang or llvm-gcc but not FSF GCC.

I searched the clang bug database for “regex” and didn’t see any titles that 
looked relevant to me. Maybe you could take a look and file a bug report? If 
nobody reports this problem to the clang developers it probably won’t get fixed.

http://llvm.org/bugs/

_______________________________________________
macports-users mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-users

Reply via email to