Changeset 1022 for trunk/libtorrent/rak/algorithm.h
- Timestamp:
- 12/23/07 14:12:23 (4 years ago)
- Files:
-
- 1 modified
-
trunk/libtorrent/rak/algorithm.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtorrent/rak/algorithm.h
r939 r1022 123 123 // Count the number of elements from the start of the containers to 124 124 // the first inequal element. 125 template <typename _InputIter >126 typename std::iterator_traits<_InputIter >::difference_type127 count_base(_InputIter __first1, _InputIter__last1,128 _InputIter __first2, _InputIter__last2) {125 template <typename _InputIter1, typename _InputIter2> 126 typename std::iterator_traits<_InputIter1>::difference_type 127 count_base(_InputIter1 __first1, _InputIter1 __last1, 128 _InputIter2 __first2, _InputIter2 __last2) { 129 129 130 typename std::iterator_traits<_InputIter >::difference_type __n = 0;130 typename std::iterator_traits<_InputIter1>::difference_type __n = 0; 131 131 132 132 for ( ;__first1 != __last1 && __first2 != __last2; ++__first1, ++__first2, ++__n) … … 137 137 } 138 138 139 template <typename _ InputIter>140 typename std::iterator_traits<_InputIter>::value_type 141 make_base(_InputIter __first, _InputIter __last ) {139 template <typename _Return, typename _InputIter, typename _Ftor> 140 _Return 141 make_base(_InputIter __first, _InputIter __last, _Ftor __ftor) { 142 142 if (__first == __last) 143 143 return ""; 144 144 145 typename std::iterator_traits<_InputIter>::value_type __base = *__first++;145 _Return __base = __ftor(*__first++); 146 146 147 147 for ( ;__first != __last; ++__first) { 148 148 typename std::iterator_traits<_InputIter>::difference_type __pos = count_base(__base.begin(), __base.end(), 149 __f irst->begin(), __first->end());149 __ftor(*__first).begin(), __ftor(*__first).end()); 150 150 151 151 if (__pos < (typename std::iterator_traits<_InputIter>::difference_type)__base.size()) … … 156 156 } 157 157 158 159 160 158 } 161 159
