21 #ifndef ROCPRIM_DETAIL_MATCH_RESULT_TYPE_HPP_    22 #define ROCPRIM_DETAIL_MATCH_RESULT_TYPE_HPP_    24 #include <type_traits>    26 #include "../config.hpp"    28 BEGIN_ROCPRIM_NAMESPACE
    44     template<
class F, 
class... Args>
    46     static auto call(F&& f, Args&&... args)
    47         -> decltype(std::forward<F>(f)(std::forward<Args>(args)...));
    50 template<
class B, 
class MT>
    53     template<class T, class Td = typename std::decay<T>::type,
    54         class = typename std::enable_if<std::is_base_of<B, Td>::value>::type
    57     static auto get(T&& t) -> T&&;
    59     template<class T, class Td = typename std::decay<T>::type,
    60         class = typename std::enable_if<is_reference_wrapper<Td>::value>::type
    63     static auto get(T&& t) -> decltype(t.get());
    65     template<class T, class Td = typename std::decay<T>::type,
    66         class = typename std::enable_if<!std::is_base_of<B, Td>::value>::type,
    67         class = typename std::enable_if<!is_reference_wrapper<Td>::value>::type
    70     static auto get(T&& t) -> decltype(*std::forward<T>(t));
    72     template<class T, class... Args, class MT1,
    73         class = typename std::enable_if<std::is_function<MT1>::value>::type
    76     static auto call(MT1 B::*pmf, T&& t, Args&&... args)
    77         -> decltype((invoke_impl::get(std::forward<T>(t)).*pmf)(std::forward<Args>(args)...));
    81     static auto call(MT B::*pmd, T&& t)
    82         -> decltype(invoke_impl::get(std::forward<T>(t)).*pmd);
    85 template<class F, class... Args, class Fd = typename std::decay<F>::type>
    87 auto INVOKE(F&& f, Args&&... args)
    88     -> decltype(invoke_impl<Fd>::call(std::forward<F>(f), std::forward<Args>(args)...));
    91 template <typename AlwaysVoid, typename, typename...>
    93 template <
typename F, 
typename...Args>
    94 struct invoke_result_impl<decltype(void(INVOKE(std::declval<F>(), std::declval<Args>()...))), F, Args...>
    96     using type = decltype(INVOKE(std::declval<F>(), std::declval<Args>()...));
    99 template <
class F, 
class... ArgTypes>
   102 template<
class InputType, 
class BinaryFunction>
   109 END_ROCPRIM_NAMESPACE
   111 #endif // ROCPRIM_DETAIL_MATCH_RESULT_TYPE_HPP_ Definition: match_result_type.hpp:38
Deprecated: Configuration of device-level scan primitives. 
Definition: block_histogram.hpp:62
Definition: match_result_type.hpp:100
Definition: match_result_type.hpp:92
Definition: match_result_type.hpp:43
Definition: match_result_type.hpp:103