Hi,

I am using boost 1.37 on osx from macports and I have a problem using the regex library with gcc 4.4, although it seems to work perfectly with gcc 4.3 and 4.2.

The problem is with creating a boost::regex object- simple program below:
#include <boost/regex.hpp>
#include <string>

int main(int argc, char **argv)

{
  std::string s("(.*)bar|(.*)bah");
  boost::regex re_node(s);
  return 1;
}
The backtrace it produces is below:
(gdb) bt
#0  0x90d90b9e in __kill ()
#1  0x90d90b91 in kill$UNIX2003 ()
#2  0x90e07ec2 in raise ()
#3  0x90e1747f in abort ()
#4  0x0026792c in __gnu_cxx::__verbose_terminate_handler ()
#5  0x00265239 in __cxxabiv1::__terminate ()
#6  0x0026527d in std::terminate ()
#7  0x0026539c in __cxa_throw ()
#8  0x001eeb00 in std::__throw_bad_cast ()
#9  0x00370d25 in std::use_facet<std::messages<char> > ()
#10 0x00127c93 in boost::re_detail::cpp_regex_traits_base<char>::imbue () at cpp_regex_traits.hpp:215
#11 regex_data [inlined] () at basic_regex.hpp:173
#12 basic_regex_implementation (this=0x500200) at cpp_regex_traits.hpp:93
#13 0x001256a6 in shared_ptr<boost::re_detail::basic_regex_implementation<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > > [inlined] () at shared_ptr.hpp:525
#14 boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign (this=0xbfffe790, p1=0x5001ec "(.*)bar|(.*)bah", p2=0x5001fb "", f=0) at basic_regex.hpp:525
#15 0x00001d6a in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign ()
#16 0x00001d3e in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::assign<std::char_traits<char>, std::allocator<char> > ()
#17 0x00001c9f in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::basic_regex<std::char_traits<char>, std::allocator<char> > ()
#18 0x00001b20 in main ()
(gdb)
Is this a problem with boost, or with the compiler? Any ideas for a fix?

many thanks,

a