Stable sort was reimplemented; merge-sort implementation was replaced by adaptor to standard Sort.
This has two advantages:
- Only IterSwap and comparison is now required for StableSort, this means better performance for Array and also possibility to sort polymorphic arrays
- Instead of temporary buffer of sizeof(T) * count, only sizeof(int) * count is now required.
Perfomance for average case is better than original U++ mergesort and on par with stl's mergesort.
Anyway, as for this kind stable sort C-style sign compare ("SgnCompare" in U++) is a bit faster, there are also introduced version ending "Cmp" that rely on this 3-state comparison predicate instead.