table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::indirect_result_t(3) | C++ Standard Libary | std::indirect_result_t(3) | 
NAME¶
std::indirect_result_t - std::indirect_result_t
Synopsis¶
 Defined in header <iterator>
  
   template< class F, class... Is >
  
   requires (std::indirectly_readable<Is> && ...) &&
  
   std::invocable<F, std::iter_reference_t<Is>...> (since
    C++20)
  
   using indirect_result_t = std::invoke_result_t<F,
  
   std::iter_reference_t<Is>...>;
  
   The alias template indirect_result_t obtains the result type of invoking an
  
   invocable type F on the result of dereferencing indirectly_readable types
    Is....
Template parameters¶
 F - an invocable type
  
   Is - indirectly readable types that are dereferenced to arguments
Example¶
// Run this code
  
   #include <iterator>
  
   #include <type_traits>
  
   struct Fn
  
   {
  
   long operator()(const int&);
  
   int operator()(int&&);
  
   short operator()(int, int) const;
  
   auto operator()(const float) -> int&;
  
   void operator()(int[8]);
  
   };
  
   static_assert(
  
   std::is_same_v<std::indirect_result_t<Fn, const int*>, long> and
  
   std::is_same_v<std::indirect_result_t<Fn,
    std::move_iterator<int*>>, int> and
  
   std::is_same_v<std::indirect_result_t<const Fn, int*, int*>,
    short> and
  
   std::is_same_v<std::indirect_result_t<Fn, float*>, int&> and
  
   std::is_same_v<std::indirect_result_t<Fn, int**>, void>
  
   );
  
   int main() {}
See also¶
 result_of deduces the result type of invoking a callable object
    with
  
   invoke_result a set of arguments
  
   (C++11)(removed in C++20) (class template)
  
   (C++17)
| 2024.06.10 | http://cppreference.com |