std::indirect_result_t
std::indirect_result_t (간접 호출 결과 타입)
호출 가능 타입 F를 indirectly_readable 타입 Is...의 역참조 결과에 호출한 결과 타입을 얻는 타입 별칭이에요. C++20부터 있어요.
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class F, class... Is >
requires (std::indirectly_readable<Is> && ...) &&
std::invocable<F, std::iter_reference_t<Is>...>
using indirect_result_t = std::invoke_result_t<F, std::iter_reference_t<Is>...>;
indirect_result_t 별칭 템플릿은 호출 가능 타입 F를 indirectly_readable 타입 Is...의 역참조 결과에 호출한 결과 타입을 얻어요.
템플릿 매개변수
F— 호출 가능 타입Is...— 인자로 역참조되는 indirectly readable 타입들
예제
#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>);