[ http://issues.apache.org/jira/browse/STDCXX-89?page=comments#action_12361460 ]
Martin Sebor commented on STDCXX-89: ------------------------------------ Note that the patch only fixes the problem when inline member templates are supported. The _RWSTD_NO_INLINE_MEMBER_TEMPLATES case (i.e., when member templatesare not supported at all) is not handled. Since the absence of member template support likely implies the lack of support for partial template specialization I'm not sure at this point how fix it there. > 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 > 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
