From: Lancelot Six <lancelot.six@amd.com>
To: <gdb-patches@sourceware.org>
Cc: Lancelot Six <lancelot.six@amd.com>
Subject: [PATCH 09/11] gdbsupport: Replace gdb::invoke_result with std::invoke_result
Date: Fri, 13 Oct 2023 14:44:16 +0000 [thread overview]
Message-ID: <20231013144418.3180617-10-lancelot.six@amd.com> (raw)
In-Reply-To: <20231013144418.3180617-1-lancelot.six@amd.com>
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
---
gdbsupport/filtered-iterator.h | 4 ++--
gdbsupport/function-view.h | 4 ++--
gdbsupport/invoke-result.h | 37 ----------------------------------
gdbsupport/parallel-for.h | 9 ++++-----
gdbsupport/safe-iterator.h | 4 ++--
5 files changed, 10 insertions(+), 48 deletions(-)
delete mode 100644 gdbsupport/invoke-result.h
diff --git a/gdbsupport/filtered-iterator.h b/gdbsupport/filtered-iterator.h
index 9e9548ef824..aa3366942d1 100644
--- a/gdbsupport/filtered-iterator.h
+++ b/gdbsupport/filtered-iterator.h
@@ -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 @@ class filtered_iterator
: 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; }
diff --git a/gdbsupport/function-view.h b/gdbsupport/function-view.h
index cd62d40fd5e..ed113c74cfd 100644
--- a/gdbsupport/function-view.h
+++ b/gdbsupport/function-view.h
@@ -192,7 +192,7 @@
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
index c9bb55e5b08..00000000000
--- a/gdbsupport/invoke-result.h
+++ /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 */
diff --git a/gdbsupport/parallel-for.h b/gdbsupport/parallel-for.h
index b57f7ea97e1..ee7bfd948e2 100644
--- a/gdbsupport/parallel-for.h
+++ b/gdbsupport/parallel-for.h
@@ -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 @@ struct par_for_accumulator<void>
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);
diff --git a/gdbsupport/safe-iterator.h b/gdbsupport/safe-iterator.h
index ccd772ca2a5..b4891328f1a 100644
--- a/gdbsupport/safe-iterator.h
+++ b/gdbsupport/safe-iterator.h
@@ -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 @@ class basic_safe_iterator
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; }
--
2.34.1
next prev parent reply other threads:[~2023-10-13 14:45 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-13 14:44 [PATCH 00/11] GDB: Require C++17 Lancelot Six
2023-10-13 14:44 ` [PATCH 01/11] gdb/ax_cxx_compile_stdcxx.m4: upgrade Lancelot Six
2023-10-13 14:44 ` [PATCH 02/11] gdb/gdbsupport/gdbserver: Require c++17 Lancelot Six
2023-10-13 15:21 ` Eli Zaretskii
2023-10-16 21:50 ` Pedro Alves
2023-10-13 14:44 ` [PATCH 03/11] gdb: Use C++17's std::make_unique instead of gdb::make_unique Lancelot Six
2023-10-16 19:14 ` Tom Tromey
2023-10-17 14:02 ` Lancelot SIX
2023-10-13 14:44 ` [PATCH 04/11] gdb: Replace gdb::optional with std::optional Lancelot Six
2023-10-13 14:44 ` [PATCH 05/11] gdbsupport: remove gdb::optional Lancelot Six
2023-10-13 14:44 ` [PATCH 06/11] gdb: Use std::string_view instead of gdb::string_view Lancelot Six
2023-10-14 21:50 ` Tom Tromey
2023-10-14 23:58 ` Six, Lancelot
2023-10-16 15:06 ` Lancelot SIX
2023-10-16 19:35 ` Tom Tromey
2023-10-16 21:51 ` Pedro Alves
2023-10-17 14:13 ` Lancelot SIX
2023-10-17 14:20 ` Simon Marchi
2023-10-13 14:44 ` [PATCH 07/11] gdb: Remove uses of gdb::to_string (const std::string_view &) Lancelot Six
2023-10-13 14:44 ` [PATCH 08/11] gdbsupport: Remove gdb::string_view Lancelot Six
2023-10-16 19:38 ` Tom Tromey
2023-10-13 14:44 ` Lancelot Six [this message]
2023-10-13 14:44 ` [PATCH 10/11] gdb/disasm.h: Mark callbacks noexcept unconditionally Lancelot Six
2023-10-16 21:51 ` Pedro Alves
2023-10-13 14:44 ` [PATCH 11/11] gdb: Use initializers in lambda captures unconditionally Lancelot Six
2023-10-16 19:43 ` [PATCH 00/11] GDB: Require C++17 Tom Tromey
2023-10-16 21:53 ` Pedro Alves
2023-10-23 13:42 ` Lancelot SIX
2023-10-28 20:48 ` Lancelot SIX
2023-11-21 12:04 ` [COMMITTED PATCH v2 0/9] " Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 1/9] gdb: Use C++17's std::make_unique instead of gdb::make_unique Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 2/9] gdb: Replace gdb::optional with std::optional Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 3/9] gdbsupport: remove gdb::optional Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 4/9] gdb: Use std::string_view instead of gdb::string_view Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 5/9] gdb: Remove uses of gdb::to_string (const std::string_view &) Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 6/9] gdbsupport: Remove gdb::string_view Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 7/9] gdbsupport: Replace gdb::invoke_result with std::invoke_result Lancelot Six
2023-11-21 12:04 ` [COMMITTED PATCH v2 8/9] gdb/disasm.h: Mark callbacks noexcept unconditionally Lancelot Six
2023-11-21 12:05 ` [COMMITTED PATCH v2 9/9] gdb: Use initializers in lambda captures unconditionally Lancelot Six
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231013144418.3180617-10-lancelot.six@amd.com \
--to=lancelot.six@amd.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox