I noticed that a recent change in gcc with -std=c++0x causes the compilation of one of my programs to fail. I was using boost regular expressions. stl_pair:166
#include <iostream> #include <boost/regex.hpp> int main() { boost::regex expression("^[:space:]*#"); char buf[1024]; while (!std::cin.eof()) { std::cin.getline(buf, 1024); std::string sbuf = buf; if (boost::regex_match(sbuf, expression)) continue; std::cout << sbuf << std::endl; } } /usr/lib/gcc-snapshot/bin/g++ -I/usr/local/include/boost-1_36/ -ggdb -O0 -std=gnu++0x *.cpp In file included from /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_algobase.h:71, from /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/char_traits.h:46, from /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/ios:46, from /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/ostream:45, from /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/iostream:45, from c.cpp:1: /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_pair.h: In constructor 'std::pair<_T1, _T2>::pair(_U1&&, _Args&& ...) [with _U1 = const boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, _Args = , _Checker = void, _T1 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _T2 = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]': /usr/local/include/boost-1_36/boost/regex/v4/sub_match.hpp:144: instantiated from 'boost::sub_match<BidiIterator>::sub_match(const boost::sub_match<BidiIterator>&, bool) [with BidiIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]' /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/vector.tcc:385: instantiated from 'void std::vector<_Tp, _Alloc>::_M_fill_insert(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, _Alloc = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]' /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_vector.h:858: instantiated from 'void std::vector<_Tp, _Alloc>::insert(__gnu_cxx::__normal_iterator<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer, std::vector<_Tp, _Alloc> >, size_t, const _Tp&) [with _Tp = boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, _Alloc = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]' /usr/local/include/boost-1_36/boost/regex/v4/match_results.hpp:261: instantiated from 'void boost::match_results<BidiIterator, Allocator>::set_size(typename Allocator::size_type, BidiIterator, BidiIterator) [with BidiIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Allocator = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >]' /usr/local/include/boost-1_36/boost/regex/v4/perl_matcher_common.hpp:201: instantiated from 'bool boost::re_detail::perl_matcher<BidiIterator, Allocator, traits>::match_imp() [with BidiIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Allocator = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, traits = boost::regex_traits<char, boost::cpp_regex_traits<char> >]' /usr/local/include/boost-1_36/boost/regex/v4/perl_matcher_common.hpp:180: instantiated from 'bool boost::re_detail::perl_matcher<BidiIterator, Allocator, traits>::match() [with BidiIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Allocator = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, traits = boost::regex_traits<char, boost::cpp_regex_traits<char> >]' /usr/local/include/boost-1_36/boost/regex/v4/regex_match.hpp:50: instantiated from 'bool boost::regex_match(BidiIterator, BidiIterator, boost::match_results<BidiIterator, Allocator>&, const boost::basic_regex<charT, traits>&, boost::regex_constants::match_flag_type) [with BidiIterator = __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Allocator = std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, charT = char, traits = boost::regex_traits<char, boost::cpp_regex_traits<char> >]' /usr/local/include/boost-1_36/boost/regex/v4/regex_match.hpp:100: instantiated from 'bool boost::regex_match(const std::basic_string<charT, ST, SA>&, const boost::basic_regex<charT, traits>&, boost::regex_constants::match_flag_type) [with ST = std::char_traits<char>, SA = std::allocator<char>, charT = char, traits = boost::regex_traits<char, boost::cpp_regex_traits<char> >]' c.cpp:12: instantiated from here /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_pair.h:166: error: no matching function for call to '__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::__normal_iterator(const boost::sub_match<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)' /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_iterator.h:691: note: candidates are: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator(const _Iterator&) [with _Iterator = const char*, _Container = std::basic_string<char, std::char_traits<char>, std::allocator<char> >] /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_iterator.h:688: note: __gnu_cxx::__normal_iterator<_Iterator, _Container>::__normal_iterator() [with _Iterator = const char*, _Container = std::basic_string<char, std::char_traits<char>, std::allocator<char> >] /usr/lib/gcc-snapshot/lib/gcc/x86_64-linux-gnu/4.4.0/../../../../include/c++/4.4.0/bits/stl_iterator.h:674: note: __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::__normal_iterator(const __gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&) make: *** [all] Error 1 Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 20081024-0ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs --enable-languages=c,c++,java,fortran,objc,obj-c++,ada --prefix=/usr/lib/gcc-snapshot --enable-shared --with-system-zlib --disable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo --disable-plugin --with-java-home=/usr/lib/gcc-snapshot --enable-java-home --with-jvm-root-dir=/usr/lib/gcc-snapshot/jvm --with-jvm-jar-dir=/usr/lib/gcc-snapshot/jvm-exports --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-mpfr --disable-werror --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.0 20081024 (experimental) [trunk revision 141342] (Ubuntu 20081024-0ubuntu1) Makefile CXX=g++ #CXX=/usr/lib/gcc-snapshot/bin/g++ all: $(CXX) -I/usr/local/include/boost-1_36/ -ggdb -O0 -std=gnu++0x *.cpp -- Summary: [c++0x] GCC 4.4 regression r141214 of gcc c++0x stl_pair.c causes a boost 1.36 compilation to fail Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: indy2718 at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37919