Spec-Zone.ru › C++

std::indirect_result_t

Определён в заголовочном файле <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>...>;
(начиная с C++20)

Шаблон псевдонима indirect_result_t получает тип результата вызова типа invocable F с результатом разыменования типов indirectly_readable Is....

Параметры шаблона

F - вызываемый тип
Is - типы, доступные для косвенного чтения, разыменовываемые до аргументов

Пример

#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() {}

См. также

result_ofinvoke_result
(C++11)(удалён в C++20)(C++17)
определяет тип результата вызова вызываемого объекта с набором аргументов
(шаблон класса)
projected_value_t
(C++26)
вычисляет тип значения типа indirectly_readable с помощью проекции
(шаблон псевдонима)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/indirect_result_t

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API