libstdc++: Remove redundant bool casts in ranges algorithms
authorJonathan Wakely <jwakely@redhat.com>
Wed, 19 Feb 2020 10:40:24 +0000 (10:40 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 19 Feb 2020 12:46:57 +0000 (12:46 +0000)
Some of these casts were added by me the other day, but some were
already present. I think they are all redundant following the
introduction of the boolean-testable concept in P1964R2.

* include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
(__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
(__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/ranges_algo.h

index b60f5c301b4727fd04b99210f3afee56fdac0180..a8fcd7cb475780bce45fc1982585b054164d1238 100644 (file)
@@ -1,3 +1,9 @@
+2020-02-19  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/bits/ranges_algo.h (__find_fn, __find_first_of_fn)
+       (__adjacent_find_fn, __remove_if_fn, __remove_copy_if_fn)
+       (__unique_fn, __unique_copy_fn): Remove redundant conversions to bool.
+
 2020-02-18  Patrick Palka  <ppalka@redhat.com>
 
        P1983R0 Wording for GB301, US296, US292, US291, and US283
index 31b1bf0d448ab5af0d6ff61ca3c271d3ffa94529..a69181e12cb7e27874ebca7934111429743a95d4 100644 (file)
@@ -244,7 +244,7 @@ namespace ranges
                 const _Tp& __value, _Proj __proj = {}) const
       {
        while (__first != __last
-           && !(bool)(std::__invoke(__proj, *__first) == __value))
+           && !(std::__invoke(__proj, *__first) == __value))
          ++__first;
        return __first;
       }
@@ -333,9 +333,9 @@ namespace ranges
       {
        for (; __first1 != __last1; ++__first1)
          for (auto __iter = __first2; __iter != __last2; ++__iter)
-           if ((bool)std::__invoke(__pred,
-                                   std::__invoke(__proj1, *__first1),
-                                   std::__invoke(__proj2, *__iter)))
+           if (std::__invoke(__pred,
+                             std::__invoke(__proj1, *__first1),
+                             std::__invoke(__proj2, *__iter)))
              return __first1;
        return __first1;
       }
@@ -730,9 +730,9 @@ namespace ranges
        auto __next = __first;
        for (; ++__next != __last; __first = __next)
          {
-           if ((bool)std::__invoke(__pred,
-                                   std::__invoke(__proj, *__first),
-                                   std::__invoke(__proj, *__next)))
+           if (std::__invoke(__pred,
+                             std::__invoke(__proj, *__first),
+                             std::__invoke(__proj, *__next)))
              return __first;
          }
        return __next;
@@ -1219,7 +1219,7 @@ namespace ranges
        auto __result = __first;
        ++__first;
        for (; __first != __last; ++__first)
-         if (!(bool)std::__invoke(__pred, std::__invoke(__proj, *__first)))
+         if (!std::__invoke(__pred, std::__invoke(__proj, *__first)))
            {
              *__result = std::move(*__first);
              ++__result;
@@ -1289,7 +1289,7 @@ namespace ranges
                 _Pred __pred, _Proj __proj = {}) const
       {
        for (; __first != __last; ++__first)
-         if (!(bool)std::__invoke(__pred, std::__invoke(__proj, *__first)))
+         if (!std::__invoke(__pred, std::__invoke(__proj, *__first)))
            {
              *__result = *__first;
              ++__result;
@@ -1372,9 +1372,9 @@ namespace ranges
        auto __dest = __first;
        ++__first;
        while (++__first != __last)
-         if (!(bool)std::__invoke(__comp,
-                                  std::__invoke(__proj, *__dest),
-                                  std::__invoke(__proj, *__first)))
+         if (!std::__invoke(__comp,
+                            std::__invoke(__proj, *__dest),
+                            std::__invoke(__proj, *__first)))
            *++__dest = std::move(*__first);
        return {++__dest, __first};
       }
@@ -1420,9 +1420,9 @@ namespace ranges
            auto __next = __first;
            *__result = *__next;
            while (++__next != __last)
-             if (!(bool)std::__invoke(__comp,
-                                      std::__invoke(__proj, *__first),
-                                      std::__invoke(__proj, *__next)))
+             if (!std::__invoke(__comp,
+                                std::__invoke(__proj, *__first),
+                                std::__invoke(__proj, *__next)))
                {
                  __first = __next;
                  *++__result = *__first;
@@ -1434,9 +1434,9 @@ namespace ranges
          {
            *__result = *__first;
            while (++__first != __last)
-             if (!(bool)std::__invoke(__comp,
-                                      std::__invoke(__proj, *__result),
-                                      std::__invoke(__proj, *__first)))
+             if (!std::__invoke(__comp,
+                                std::__invoke(__proj, *__result),
+                                std::__invoke(__proj, *__first)))
                  *++__result = *__first;
            return {std::move(__first), std::move(++__result)};
          }