]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdbsupport: Replace gdb::invoke_result with std::invoke_result
authorLancelot Six <lancelot.six@amd.com>
Fri, 13 Oct 2023 12:39:55 +0000 (12:39 +0000)
committerLancelot Six <lancelot.six@amd.com>
Tue, 21 Nov 2023 11:52:36 +0000 (11:52 +0000)
Given that GDB now requires C++17, we can replace gdb::invoke_result
with std::invoke_result which is provided by <type_traits>.

This patch also removes gdbsupport/invoke-result.h as it is not used
anymore.

Change-Id: I7e567356d38d6b3d85d8797d61cfc83f6f933f22
Approved-By: Tom Tromey <tom@tromey.com>
Approved-By: Pedro Alves <pedro@palves.net>
gdbsupport/filtered-iterator.h
gdbsupport/function-view.h
gdbsupport/invoke-result.h [deleted file]
gdbsupport/parallel-for.h
gdbsupport/safe-iterator.h

index 9e9548ef824ebab6bb84f5f63d5b1167508da269..aa3366942d1985ad40b556ba7ecab5985b66bc9e 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef COMMON_FILTERED_ITERATOR_H
 #define COMMON_FILTERED_ITERATOR_H
 
-#include "gdbsupport/invoke-result.h"
+#include <type_traits>
 
 /* A filtered iterator.  This wraps BaseIterator and automatically
    skips elements that FilterFunc filters out.  Requires that
@@ -56,7 +56,7 @@ public:
     : filtered_iterator (static_cast<const filtered_iterator &> (other))
   {}
 
-  typename gdb::invoke_result<decltype(&BaseIterator::operator*),
+  typename std::invoke_result<decltype(&BaseIterator::operator*),
                              BaseIterator>::type
     operator* () const
   { return *m_it; }
index cd62d40fd5e25c80f873d923f469b2cee626cc16..ed113c74cfdd3c897b8a24b36054b0dd43f6402b 100644 (file)
   You can find unit tests covering the whole API in
   unittests/function-view-selftests.c.  */
 
-#include "invoke-result.h"
+#include <type_traits>
 namespace gdb {
 
 namespace fv_detail {
@@ -230,7 +230,7 @@ class function_view<Res (Args...)>
   /* True if Func can be called with Args, and either the result is
      Res, convertible to Res or Res is void.  */
   template<typename Callable,
-          typename Res2 = typename gdb::invoke_result<Callable &, Args...>::type>
+          typename Res2 = typename std::invoke_result<Callable &, Args...>::type>
   struct IsCompatibleCallable : CompatibleReturnType<Res2, Res>
   {};
 
diff --git a/gdbsupport/invoke-result.h b/gdbsupport/invoke-result.h
deleted file mode 100644 (file)
index c9bb55e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Compatibility wrapper around std::result_of and std::invoke_result.
-
-   Copyright (C) 2022-2023 Free Software Foundation, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-#ifndef GDBSUPPORT_INVOKE_RESULT_H
-#define GDBSUPPORT_INVOKE_RESULT_H
-
-#include <type_traits>
-
-namespace gdb
-{
-#if __cplusplus >= 201703L
-template<typename Callable, class... Args>
-using invoke_result = std::invoke_result<Callable, Args...>;
-#else
-template<typename Callable, typename... Args>
-using invoke_result = std::result_of<Callable (Args...)>;
-#endif
-
-} /* namespace gdb */
-
-#endif /* GDBSUPPORT_INVOKE_RESULT_H */
index b57f7ea97e1b09458e6b5b8a01b72d50e3597d9b..ee7bfd948e24c3a04e72d3201a709e714bb1c9df 100644 (file)
@@ -22,7 +22,6 @@
 
 #include <algorithm>
 #include <type_traits>
-#include "gdbsupport/invoke-result.h"
 #include "gdbsupport/thread-pool.h"
 #include "gdbsupport/function-view.h"
 
@@ -145,14 +144,14 @@ private:
 
 template<class RandomIt, class RangeFunction>
 typename gdb::detail::par_for_accumulator<
-    typename gdb::invoke_result<RangeFunction, RandomIt, RandomIt>::type
+    typename std::invoke_result<RangeFunction, RandomIt, RandomIt>::type
   >::result_type
 parallel_for_each (unsigned n, RandomIt first, RandomIt last,
                   RangeFunction callback,
                   gdb::function_view<size_t(RandomIt)> task_size = nullptr)
 {
   using result_type
-    = typename gdb::invoke_result<RangeFunction, RandomIt, RandomIt>::type;
+    = typename std::invoke_result<RangeFunction, RandomIt, RandomIt>::type;
 
   /* If enabled, print debug info about how the work is distributed across
      the threads.  */
@@ -305,13 +304,13 @@ parallel_for_each (unsigned n, RandomIt first, RandomIt last,
 
 template<class RandomIt, class RangeFunction>
 typename gdb::detail::par_for_accumulator<
-    typename gdb::invoke_result<RangeFunction, RandomIt, RandomIt>::type
+    typename std::invoke_result<RangeFunction, RandomIt, RandomIt>::type
   >::result_type
 sequential_for_each (unsigned n, RandomIt first, RandomIt last,
                     RangeFunction callback,
                     gdb::function_view<size_t(RandomIt)> task_size = nullptr)
 {
-  using result_type = typename gdb::invoke_result<RangeFunction, RandomIt, RandomIt>::type;
+  using result_type = typename std::invoke_result<RangeFunction, RandomIt, RandomIt>::type;
 
   gdb::detail::par_for_accumulator<result_type> results (0);
 
index ccd772ca2a594e8c8683ec00374ec755b2ae4739..b4891328f1a1f4d3e38dca962d325268259ca692 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef COMMON_SAFE_ITERATOR_H
 #define COMMON_SAFE_ITERATOR_H
 
-#include "gdbsupport/invoke-result.h"
+#include <type_traits>
 
 /* A forward iterator that wraps Iterator, such that when iterating
    with iterator IT, it is possible to delete *IT without invalidating
@@ -77,7 +77,7 @@ public:
   basic_safe_iterator ()
   {}
 
-  typename gdb::invoke_result<decltype(&Iterator::operator*), Iterator>::type
+  typename std::invoke_result<decltype(&Iterator::operator*), Iterator>::type
     operator* () const
   { return *m_it; }