]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common,test: avoid deprecated result_of_t
authorLucian Petrut <lpetrut@cloudbasesolutions.com>
Fri, 7 Apr 2023 11:11:24 +0000 (11:11 +0000)
committerLucian Petrut <lpetrut@cloudbasesolutions.com>
Thu, 17 Aug 2023 13:31:12 +0000 (13:31 +0000)
std::result_of_t was deprecated in c++17 and removed in c++20.
gcc kept it around for backwards compatibility, however it was
removed in clang.

For this reason, we'll need to use std::invoke_result_ot instead,
which has a slightly different syntax.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
src/common/async/waiter.h
src/common/config.h
src/common/convenience.h
src/test/librados/test_shared.h

index 219a27cf7bf5962a789a1fbd03e21c3aaae9fd19..2dc032f6383fa2966056c46a5e62e39a1787eeb1 100644 (file)
@@ -69,12 +69,12 @@ public:
   }
 
   template<typename... Args>
-  std::result_of_t<T&(Args&&...)> operator ()(Args&&... args ) const {
+  auto operator()(Args&&... args) const {
     return (*p)(std::forward<Args>(args)...);
   }
 
   template<typename... Args>
-  std::result_of_t<T&&(Args&&...)> operator ()(Args&&... args ) {
+  auto operator()(Args&&... args) {
     return std::move(*p)(std::forward<Args>(args)...);
   }
 
index bafac663127370237224176a15fd9e9bfdab75cc..ff7bc20f613df267cf91c6b3a977684b70a0b665 100644 (file)
@@ -203,7 +203,7 @@ public:
   template<typename T, typename Callback, typename...Args>
   auto with_val(const ConfigValues& values, const std::string_view key,
                Callback&& cb, Args&&... args) const ->
-    std::result_of_t<Callback(const T&, Args...)> {
+    std::invoke_result_t<Callback, const T&, Args...> {
     return std::forward<Callback>(cb)(
       std::get<T>(this->get_val_generic(values, key)),
       std::forward<Args>(args)...);
index db803c59d5a718053defeba651a300a827361945..2928c8480d5826abb69e0bba4b491974b22cd77e 100644 (file)
@@ -39,7 +39,7 @@ namespace ceph {
 //
 template<typename T, typename F>
 auto maybe_do(const boost::optional<T>& t, F&& f) ->
-  boost::optional<std::result_of_t<F(const std::decay_t<T>)>>
+  boost::optional<std::invoke_result_t<F, const std::decay_t<T>>>
 {
   if (t)
     return { std::forward<F>(f)(*t) };
@@ -53,9 +53,9 @@ auto maybe_do(const boost::optional<T>& t, F&& f) ->
 //
 template<typename T, typename F, typename U>
 auto maybe_do_or(const boost::optional<T>& t, F&& f, U&& u) ->
-  std::result_of_t<F(const std::decay_t<T>)>
+  std::invoke_result_t<F, const std::decay_t<T>>
 {
-  static_assert(std::is_convertible_v<U, std::result_of_t<F(T)>>,
+  static_assert(std::is_convertible_v<U, std::invoke_result_t<F, T>>,
                "Alternate value must be convertible to function return type.");
   if (t)
     return std::forward<F>(f)(*t);
@@ -68,7 +68,7 @@ auto maybe_do_or(const boost::optional<T>& t, F&& f, U&& u) ->
 
 template<typename T, typename F>
 auto maybe_do(const std::optional<T>& t, F&& f) ->
-  std::optional<std::result_of_t<F(const std::decay_t<T>)>>
+  std::optional<std::invoke_result_t<F, const std::decay_t<T>>>
 {
   if (t)
     return { std::forward<F>(f)(*t) };
@@ -82,9 +82,9 @@ auto maybe_do(const std::optional<T>& t, F&& f) ->
 //
 template<typename T, typename F, typename U>
 auto maybe_do_or(const std::optional<T>& t, F&& f, U&& u) ->
-  std::result_of_t<F(const std::decay_t<T>)>
+  std::invoke_result_t<F, const std::decay_t<T>>
 {
-  static_assert(std::is_convertible_v<U, std::result_of_t<F(T)>>,
+  static_assert(std::is_convertible_v<U, std::invoke_result_t<F, T>>,
                "Alternate value must be convertible to function return type.");
   if (t)
     return std::forward<F>(f)(*t);
@@ -132,4 +132,5 @@ inline void for_each(std::tuple<Ts...>& t, F& f) {
   _convenience::for_each_helper(t, f, std::index_sequence_for<Ts...>{});
 }
 }
+
 #endif // CEPH_COMMON_CONVENIENCE_H
index 3a18e916e2e4d4a8e42ae8bce52a57669f2a8cef..5fc94d4ffee3152cddde24f9b5002f739b9766ae 100644 (file)
@@ -37,7 +37,7 @@ public:
 };
 
 template<class Rep, class Period, typename Func, typename... Args,
-         typename Return = std::result_of_t<Func&&(Args&&...)>>
+         typename Return = std::invoke_result_t<Func, Args...>>
 Return wait_until(const std::chrono::duration<Rep, Period>& rel_time,
                 const std::chrono::duration<Rep, Period>& step,
                 const Return& expected,