Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  in-
       voking 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_itera-
       tor<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)

http://cppreference.com		  2024.06.10	     std::indirect_result_t(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::indirect_result_t&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help