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>);

더 알아보기 (Learn more)

cppreference