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

Reply via email to