From: Paolo Carlini Date: Sun, 25 Nov 2007 11:22:03 +0000 (+0000) Subject: stl_algobase.h (__lexicographical_compare<>::__lc): Move out of line. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ba940b7cb30a2f9671d43572fed6c77fd5125b6b;p=platform%2Fupstream%2Fgcc.git stl_algobase.h (__lexicographical_compare<>::__lc): Move out of line. 2007-11-25 Paolo Carlini * include/bits/stl_algobase.h (__lexicographical_compare<>::__lc): Move out of line. * include/bits/stl_algobase.h (swap_ranges): Remove redundant simulated concept checks. From-SVN: r130404 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 635bb1e..91aba14 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2007-11-25 Paolo Carlini + + * include/bits/stl_algobase.h (__lexicographical_compare<>::__lc): + Move out of line. + + * include/bits/stl_algobase.h (swap_ranges): Remove redundant + simulated concept checks. + 2007-11-23 Paolo Carlini * include/std/bitset (bitset<>::all): Add, per DR 693 [Ready]. diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h index 32dfacd..52f2ca4 100644 --- a/libstdc++-v3/include/bits/stl_algobase.h +++ b/libstdc++-v3/include/bits/stl_algobase.h @@ -166,12 +166,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _ForwardIterator1>) __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< _ForwardIterator2>) - __glibcxx_function_requires(_ConvertibleConcept< - typename iterator_traits<_ForwardIterator1>::value_type, - typename iterator_traits<_ForwardIterator2>::value_type>) - __glibcxx_function_requires(_ConvertibleConcept< - typename iterator_traits<_ForwardIterator2>::value_type, - typename iterator_traits<_ForwardIterator1>::value_type>) __glibcxx_requires_valid_range(__first1, __last1); for (; __first1 != __last1; ++__first1, ++__first2) @@ -819,27 +813,32 @@ _GLIBCXX_BEGIN_NAMESPACE(std) struct __lexicographical_compare { template - static bool - __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) - { - typedef typename iterator_traits<_II1>::iterator_category _Category1; - typedef typename iterator_traits<_II2>::iterator_category _Category2; - typedef std::__lc_rai<_Category1, _Category2> __rai_type; - - __last1 = __rai_type::__newlast1(__first1, __last1, - __first2, __last2); - for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); - ++__first1, ++__first2) - { - if (*__first1 < *__first2) - return true; - if (*__first2 < *__first1) - return false; - } - return __first1 == __last1 && __first2 != __last2; - } + static bool __lc(_II1, _II1, _II2, _II2); }; + template + template + bool + __lexicographical_compare<_BoolType>:: + __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) + { + typedef typename iterator_traits<_II1>::iterator_category _Category1; + typedef typename iterator_traits<_II2>::iterator_category _Category2; + typedef std::__lc_rai<_Category1, _Category2> __rai_type; + + __last1 = __rai_type::__newlast1(__first1, __last1, + __first2, __last2); + for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); + ++__first1, ++__first2) + { + if (*__first1 < *__first2) + return true; + if (*__first2 < *__first1) + return false; + } + return __first1 == __last1 && __first2 != __last2; + } + template<> struct __lexicographical_compare {