diff --git a/include/algorithm b/include/algorithm
index 7da753a..cb619c2 100644
--- a/include/algorithm
+++ b/include/algorithm
@@ -784,7 +784,7 @@
     __debug_less(_Compare& __c) : __comp_(__c) {}
 
     template <class _Tp, class _Up>
-    bool operator()(const _Tp& __x, const _Up& __y)
+    bool operator()(_Tp& __x,  _Up& __y)
     {
         bool __r = __comp_(__x, __y);
         if (__r)
@@ -795,18 +795,18 @@
     template <class _LHS, class _RHS>
     inline _LIBCPP_INLINE_VISIBILITY
     decltype((void)_VSTD::declval<_Compare&>()(
-        _VSTD::declval<_LHS const&>(), _VSTD::declval<_RHS const&>()))
-    __do_compare_assert(int, _LHS const& __l, _RHS const& __r) {
+        _VSTD::declval<_LHS &>(), _VSTD::declval<_RHS &>()))
+    __do_compare_assert(int, _LHS & __l, _RHS & __r) {
         _LIBCPP_ASSERT(!__comp_(__l, __r),
             "Comparator does not induce a strict weak ordering");
     }
 
     template <class _LHS, class _RHS>
     inline _LIBCPP_INLINE_VISIBILITY
-    void __do_compare_assert(long, _LHS const&, _RHS const&) {}
+    void __do_compare_assert(long, _LHS &, _RHS &) {}
 };
 
-#endif  // _LIBCPP_DEBUG
+#endif // _LIBCPP_DEBUG
 
 // all_of
 
diff --git a/test/libcxx/algorithms/debug_less.pass.cpp b/test/libcxx/algorithms/debug_less.pass.cpp
index 247e07f..4f92854 100644
--- a/test/libcxx/algorithms/debug_less.pass.cpp
+++ b/test/libcxx/algorithms/debug_less.pass.cpp
@@ -20,8 +20,11 @@
 #define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : throw ::DebugException())
 
 #include <algorithm>
+#include <iterator>
 #include <cassert>
 
+#include "test_macros.h"
+
 template <int ID>
 struct MyType {
     int value;
@@ -210,10 +213,32 @@
     }
 }
 
+struct NonConstArgCmp {
+    bool operator()(int& x, int &y) const {
+        return x < y;
+    }
+};
+
+void test_non_const_arg_cmp() {
+    {
+        NonConstArgCmp cmp;
+        __debug_less<NonConstArgCmp> dcmp(cmp);
+        int x = 0, y = 1;
+        assert(dcmp(x, y));
+        assert(!dcmp(y, x));
+    }
+    {
+        NonConstArgCmp cmp;
+        int arr[] = {5, 4, 3, 2, 1};
+        std::sort(std::begin(arr), std::end(arr), cmp);
+        assert(std::is_sorted(std::begin(arr), std::end(arr)));
+    }
+}
+
 int main(int, char**) {
     test_passing();
     test_failing();
     test_upper_and_lower_bound();
-
-  return 0;
+    test_non_const_arg_cmp();
+    return 0;
 }
