@@ -133,7 +133,7 @@ namespace grailsort_detail
133133 }
134134
135135 template <typename RandomAccessIterator, typename Compare, typename T>
136- static int BinarySearchLeft (RandomAccessIterator array, int start, int length, const T & target, Compare comp) {
136+ static int BinarySearchLeft (RandomAccessIterator array, int start, int length, T& & target, Compare comp) {
137137 int left = 0 ;
138138 int right = length;
139139
@@ -153,7 +153,7 @@ namespace grailsort_detail
153153
154154 // Credit to Anonymous0726 for debugging
155155 template <typename RandomAccessIterator, typename Compare, typename T>
156- static int BinarySearchRight (RandomAccessIterator array, int start, int length, const T & target, Compare comp) {
156+ static int BinarySearchRight (RandomAccessIterator array, int start, int length, T& & target, Compare comp) {
157157 int left = 0 ;
158158 int right = length;
159159
@@ -283,7 +283,10 @@ namespace grailsort_detail
283283 }
284284
285285 if (buffer != left) {
286- std::swap_ranges (buffer, buffer + (middle - left), left);
286+ while (left != middle) {
287+ std::iter_swap (buffer, left);
288+ ++buffer; ++left;
289+ }
287290 }
288291 }
289292
@@ -985,7 +988,7 @@ namespace grailsort_detail
985988
986989 template <typename RandomAccessIterator, typename BufferIterator, typename Compare>
987990 void CombineOutOfPlace (RandomAccessIterator array, int firstKey, int start, int length, int subarrayLen, int blockLen,
988- int mergeCount, int lastSubarrays, BufferIterator extBuffer, int extBufferLen, Compare comp) {
991+ int mergeCount, int lastSubarrays, BufferIterator extBuffer, Compare comp) {
989992 std::move (array + (start - blockLen), array + start, extBuffer);
990993
991994 int fullMerge = 2 * subarrayLen;
@@ -1070,7 +1073,7 @@ namespace grailsort_detail
10701073 // block fits into our external buffer.
10711074 if (buffer && blockLen <= extBufferLen) {
10721075 CombineOutOfPlace (array, firstKey, start, length, subarrayLen, blockLen, mergeCount, lastSubarrays,
1073- extBuffer, extBufferLen, comp);
1076+ extBuffer, comp);
10741077 }
10751078 else {
10761079 CombineInPlace (array, firstKey, start, length, subarrayLen, blockLen,
@@ -1186,8 +1189,8 @@ namespace grailsort_detail
11861189 return ;
11871190 }
11881191
1189- BufferIterator extBuffer;
1190- int extBufferLen;
1192+ BufferIterator extBuffer{} ;
1193+ int extBufferLen = 0 ;
11911194
11921195 int blockLen = 1 ;
11931196
0 commit comments