I'm not sure if I'm missing something here, but I think this is a bug.
I'm trying to compile the following with gcc4.1.3 on Ubuntu 7.10:
$ g++ -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.1.3
--program-suffix=-4.1--enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug
--enable-mpfr --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
#include
int main()
{
using namespace boost;
std::string str;
regex re(".");
cmatch what;
regex_match(str, what, re);
return 0;
}
GCC doesn't manage to find the right overload of regex_match and says only
this:
lala.cpp: In function 'int main()':
lala.cpp:11: error: no matching function for call to
'regex_match(std::string&, boost::cmatch&, boost::regex&)'
/usr/local/src/boost/trunk/boost/regex/v4/regex_match.hpp:80: note:
candidates are: bool boost::regex_match(const std::basic_string&, boost::match_results::const_iterator, Allocator>&, const boost::basic_regex&,
boost::regex_constants::match_flag_type) [with ST = std::char_traits<char>,
SA = std::allocator<char>, Allocator = std::allocator >, charT = char, traits = boost::regex_traits]
It compiles fine if you instead pass str.c_str() as the first argument. On
the other hand, If you explicitly qualify the regex types with boost::, gcc
spews out the attached misery-ball. AFAIK, these all work on msvc9.
Is the example above supposed to work?
Cheers,
Darren