From 76c59e88eab0d7e2c9d80cd1cb8147a1f3b340c9 Mon Sep 17 00:00:00 2001 From: Mat Sutcliffe Date: Sat, 17 Apr 2021 22:21:37 +0100 Subject: [PATCH] Use std::invoke (C++17 feature) --- src/blackmisc/invoke.h | 17 ----------------- src/blackmisc/metaclass.h | 2 +- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/src/blackmisc/invoke.h b/src/blackmisc/invoke.h index be5a6bc23..82b380211 100644 --- a/src/blackmisc/invoke.h +++ b/src/blackmisc/invoke.h @@ -26,23 +26,6 @@ namespace BlackMisc namespace Private { - // Our own version of C++17 std::invoke(). - template >> - decltype(auto) invoke(F ptr, T && object) - { - return std::forward(object).*ptr; - } - template >> - decltype(auto) invoke(F ptr, T && object, Ts && ... args) - { - return (std::forward(object).*ptr)(std::forward(args)...); - } - template < typename F, typename... Ts, typename = std::enable_if_t < ! std::is_member_pointer_v>>> - decltype(auto) invoke(F && func, Ts && ... args) - { - return std::forward(func)(std::forward(args)...); - } - // Like invoke() but ignores the first argument if callable is not a member function. For uniform calling of callables with slot semantics. template decltype(auto) invokeSlotImpl(F ptr, T *object, U tuple, std::index_sequence, std::true_type) diff --git a/src/blackmisc/metaclass.h b/src/blackmisc/metaclass.h index 528c79601..55c2c1b74 100644 --- a/src/blackmisc/metaclass.h +++ b/src/blackmisc/metaclass.h @@ -174,7 +174,7 @@ namespace BlackMisc template decltype(auto) in(T &&object, Ts &&... args) const { - return Private::invoke(m_ptr, std::forward(object), std::forward(args)...); + return std::invoke(m_ptr, std::forward(object), std::forward(args)...); } //! Return name as QLatin1String.