Skip to content
This repository was archived by the owner on Jan 22, 2024. It is now read-only.

Commit c2cce51

Browse files
committed
Restore C++11 compatibility
1 parent 9668c9f commit c2cce51

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

benchmark.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,11 @@ void run(T* data, const T* const copy, T* out, size_t size, Sorter sorter,
9595
}
9696
}
9797

98-
template <typename T, typename Generator, typename Compare = std::less<>>
98+
template <typename T, typename Generator, typename Compare = std::less<void>>
9999
size_t benchmark(size_t size, Generator generator, const std::string &name,
100100
size_t outer_its, size_t inner_its,
101101
std::ofstream *stat_stream, bool deterministic_gen = false,
102-
Compare compare = Compare()) {
102+
Compare compare = Compare{}) {
103103
T *data = new T[size],
104104
*out = new T[size],
105105
*copy = new T[size];

ssssort.h

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,20 @@ inline unique_ptr<T> make_unique(size_t size) {
5555
using scalar_t = typename remove_extent<T>::type;
5656
return unique_ptr<T>(new scalar_t[size]());
5757
}
58+
59+
template <>
60+
struct less<void> {
61+
template <typename T>
62+
bool operator()(const T& x, const T& y) const {
63+
return x < y;
64+
}
65+
};
66+
67+
template <typename T>
68+
using result_of_t = typename result_of<T>::type;
69+
70+
template <bool B, typename T = void>
71+
using enable_if_t = typename enable_if<B, T>::type;
5872
}
5973
#endif
6074

@@ -320,7 +334,7 @@ void stl_sort(Iterator begin, Iterator end, Compare compare) {
320334
}
321335

322336
template <typename Iterator>
323-
void stl_sort(Iterator begin, Iterator end, std::less<>) {
337+
void stl_sort(Iterator begin, Iterator end, std::less<void>) {
324338
std::sort(begin, end);
325339
}
326340

@@ -408,7 +422,7 @@ void ssssort_int(InputIterator begin, InputIterator end,
408422
* Uses <= 2*(end-begin)*sizeof(value_type) bytes of additional memory.
409423
*/
410424
template <typename InputIterator, typename OutputIterator,
411-
typename Compare = std::less<>>
425+
typename Compare = std::less<void>>
412426
void ssssort(InputIterator begin, InputIterator end, OutputIterator out_begin, Compare compare = {}) {
413427
using value_type = typename std::iterator_traits<InputIterator>::value_type;
414428
static_assert(std::is_convertible<bool, std::result_of_t<Compare(value_type, value_type)>>::value,
@@ -432,7 +446,7 @@ void ssssort(InputIterator begin, InputIterator end, OutputIterator out_begin, C
432446
*
433447
* Uses <= 3*(end-begin)*sizeof(value_type) bytes of additional memory
434448
*/
435-
template <typename Iterator, typename Compare = std::less<>>
449+
template <typename Iterator, typename Compare = std::less<void>>
436450
void ssssort(Iterator begin, Iterator end, Compare compare = {}) {
437451
using value_type = typename std::iterator_traits<Iterator>::value_type;
438452
static_assert(std::is_convertible<bool, std::result_of_t<Compare(value_type, value_type)>>::value,

0 commit comments

Comments
 (0)