You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by "Martin Sebor (JIRA)" <ji...@apache.org> on 2006/01/12 17:16:26 UTC

[jira] Resolved: (STDCXX-89) compilation error on std::lower_bound() with Iterator::value_type != T

     [ http://issues.apache.org/jira/browse/STDCXX-89?page=all ]
     
Martin Sebor resolved STDCXX-89:
--------------------------------

    Fix Version: 4.1.4
     Resolution: Fixed

The patch has already been applied -- see: http://svn.apache.org/viewcvs?view=rev&rev=360214
I'm going to resolve this issue but will wait to close it until I hear from you.

> compilation error on std::lower_bound<Iterator, T>() with Iterator::value_type != T
> -----------------------------------------------------------------------------------
>
>          Key: STDCXX-89
>          URL: http://issues.apache.org/jira/browse/STDCXX-89
>      Project: STDCXX
>         Type: Bug
>   Components: 25. Algorithms
>     Versions: 4.1.3
>  Environment: all
>     Reporter: Duraid Madina
>     Assignee: Martin Sebor
>      Fix For: 4.1.4
>  Attachments: stdcxx-comparison.patch
>
> On both the released ("incubating") and current subversion trunk versions of stdcxx, I trip across the following - I think it is your bug: 
> "/home/duraid/stdcxx/include/algorithm.cc", line 1180: error #2304: no instance of function "__rw::__rw_lt<_TypeT>::operator() [with _Type
> T=std::iterator_traits<__rw::__rw_debug_iter<std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>, std::vector<llvm::Glob
> alValue *, std::allocator<llvm::GlobalValue *>>::pointer, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer>>
> ::value_type]" matches the argument list
>             argument types are: (std::iterator_traits<__rw::__rw_debug_iter<std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalVa
> lue *>>, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer, std::vector<llvm::GlobalValue *, std::allocator<l
> lvm::GlobalValue *>>::pointer>::iterator_type>::value_type, const llvm::GlobalValue *const)
>             object type is: __rw::__rw_lt<std::iterator_traits<__rw::__rw_debug_iter<std::vector<llvm::GlobalValue *, std::allocator<llvm:
> :GlobalValue *>>, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer, std::vector<llvm::GlobalValue *, std::al
> locator<llvm::GlobalValue *>>::pointer>>::value_type>
>           if (__comp (*__middle, __val)) {
>               ^
>           detected during instantiation of "_RandomAccessIter std::__lower_bound(_RandomAccessIter, _RandomAccessIter, const _TypeT &, _Co
> mpare, _Dist *, std::random_access_iterator_tag) [with _RandomAccessIter=__rw::__rw_debug_iter<std::vector<llvm::GlobalValue *, std::alloc
> ator<llvm::GlobalValue *>>, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer, std::vector<llvm::GlobalValue 
> *, std::allocator<llvm::GlobalValue *>>::pointer>, _TypeT=const llvm::GlobalValue *, _Compare=__rw::__rw_lt<std::iterator_traits<__rw::__r
> w_debug_iter<std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>, std::vector<llvm::GlobalValue *, std::allocator<llvm::
> GlobalValue *>>::pointer, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer>>::value_type>, _Dist=std::iterat
> or_traits<__rw::__rw_debug_iter<std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>, std::vector<llvm::GlobalValue *, st
> d::allocator<llvm::GlobalValue *>>::pointer, std::vector<llvm::GlobalValue *, std::allocator<llvm::GlobalValue *>>::pointer>>::difference_
> type]"
> Please see http://kinoko.c.u-tokyo.ac.jp/~duraid/stdcxxissues if you want to try and reproduce this. There, you will find the following files:
> DataStructure.cpp: the code I'm trying to build (it is a part of LLVM, http://www.llvm.org)
> Note: the problem is the const keyword on line 694 (const GlobalValue *V = Src[0]; ) - removing that keyword allows the file to be compiled, but I think the const keyword should be legal there.
> algorithmcc_bug.i: (preprocessed source: you should be able to compile this with aCC as follows:
> aCC -D__STDC_LIMIT_MACROS -AA -DNDEBUG -D_RWSTDDEBUG     -D_RWSTD_USE_CONFIG   +d  +w +W392 +W655 +W684 +W818 +W819 +W849 +W2193 +W2236 +W2261 +W2401 +W2487 +O2  -c algorithmcc_bug.i
> compile_log: what I see when trying to compile DataStructure.cpp with the const keyword present (grep for the error #2304)
> If you would like an account on the machine where I see this, just let me know!

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira