|
|
@@ -18,13 +18,13 @@ namespace {
|
|
|
}
|
|
|
|
|
|
namespace math { namespace detail {
|
|
|
-#define IMPL_COMPARE(expr) \
|
|
|
- if (rhs expr < lhs expr) return -1; \
|
|
|
- else if (lhs expr < rhs expr) return 1
|
|
|
- int compare(data_type const & rhs, data_type const & lhs) {
|
|
|
- IMPL_COMPARE(.size());
|
|
|
+#define IMPL_COMPARE(rexpr, lexpr) \
|
|
|
+ if (rhs rexpr < lhs lexpr) return -1; \
|
|
|
+ else if (lhs lexpr < rhs rexpr) return 1
|
|
|
+ int compare(data_type const & rhs, data_type const & lhs, size_t offset) {
|
|
|
+ IMPL_COMPARE(.size(), .size()+offset);
|
|
|
for (size_t i = rhs.size(); i > 0; --i) {
|
|
|
- IMPL_COMPARE([i-1]);
|
|
|
+ IMPL_COMPARE([i-1], [i+offset-1]);
|
|
|
}
|
|
|
return 0;
|
|
|
}
|