[LLVMbugs] [Bug 9526] New: clang++ (2.9 branch) can't deal with GNU libstdc++ 4.6.0 headers

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Mar 21 16:56:20 PDT 2011


http://llvm.org/bugs/show_bug.cgi?id=9526

           Summary: clang++ (2.9 branch) can't deal with GNU libstdc++
                    4.6.0 headers
           Product: clang
           Version: 2.9
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++0x
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: bero at arklinux.org
                CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com


I didn't have the time to look into this a lot yet, but seeing __is_trivial in
the error, I think the problem is caused by gcc's C++0x implementation being
further along than clang's.

Using libstdc++ 4.6.0, even a simple test app doesn't compile with clang++
anymore:

#include <string>

results in

In file included from test.cpp:1:
In file included from /usr/include/c++/4.6.0/string:41:
In file included from /usr/include/c++/4.6.0/bits/char_traits.h:40:
/usr/include/c++/4.6.0/bits/stl_algobase.h:378:43: error: unexpected type name
'_ValueTypeI': expected expression
      const bool __simple = (__is_trivial(_ValueTypeI)
                                          ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:383:40: error: non-type template
argument of type 'const bool' is not an integral constant expression
      return std::__copy_move<_IsMove, __simple,
                                       ^~~~~~~~
/usr/include/c++/4.6.0/bits/stl_algobase.h:573:43: error: unexpected type name
'_ValueType1': expected expression
      const bool __simple = (__is_trivial(_ValueType1)
                                          ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:578:49: error: non-type template
argument of type 'const bool' is not an integral constant expression
      return std::__copy_move_backward<_IsMove, __simple,
                                                ^~~~~~~~
/usr/include/c++/4.6.0/bits/stl_algobase.h:731:32: error: expected ';' in 'for'
statement specifier
      for (__decltype(__n + 0) __niter = __n;
                               ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:731:32: error: use of undeclared
identifier '__niter'
/usr/include/c++/4.6.0/bits/stl_algobase.h:732:5: error: use of undeclared
identifier '__niter'
           __niter > 0; --__niter, ++__first)
           ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:732:16: error: expected ')'
           __niter > 0; --__niter, ++__first)
                      ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:731:11: note: to match this '('
      for (__decltype(__n + 0) __niter = __n;
          ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:732:20: error: use of undeclared
identifier '__niter'
           __niter > 0; --__niter, ++__first)
                          ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:743:32: error: expected ';' in 'for'
statement specifier
      for (__decltype(__n + 0) __niter = __n;
                               ^
/usr/include/c++/4.6.0/bits/stl_algobase.h:743:32: error: use of undeclared
identifier '__niter'
/usr/include/c++/4.6.0/bits/stl_algobase.h:744:5: error: use of undeclared
identifier '__niter'                                                            
           __niter > 0; --__niter, ++__first)                                   
           ^                                                                    
/usr/include/c++/4.6.0/bits/stl_algobase.h:744:16: error: expected ')'          
           __niter > 0; --__niter, ++__first)                                   
                      ^                                                         
/usr/include/c++/4.6.0/bits/stl_algobase.h:743:11: note: to match this '('      
      for (__decltype(__n + 0) __niter = __n;                                   
          ^                                                                     
/usr/include/c++/4.6.0/bits/stl_algobase.h:744:20: error: use of undeclared
identifier '__niter'                                                            
           __niter > 0; --__niter, ++__first)                                   
                          ^                                                     
14 errors generated.

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list