Namensräume
Varianten
Aktionen

std::indirect_result_t

Von cppreference.com
< cpp‎ | iterator
 
 
Iterator-Bibliothek
Iterator-Konzepte
Iterator-Primitive
Algorithmus-Konzepte und Hilfsprogramme
Indirekte aufrufbare Konzepte
Gemeinsame Algorithmus-Anforderungen
(C++20)
(C++20)
(C++20)
Dienstprogramme
indirect_result_t
(C++20)
(C++20)
Iterator-Adapter
Bereichszugriff
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Definiert in Header <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>...>;
(seit C++20)

Der Alias-Template indirect_result_t ermittelt den Ergebnistyp der Invokation eines invocable-Typs F auf die Ergebnisse des Dereferenzierens von indirectly_readable-Typen Is....

[bearbeiten] Template-Parameter

F - ein aufrufbarer Typ
Is - indirekt lesbare Typen, die zu Argumenten dereferenziert werden

[bearbeiten] Beispiel

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

[bearbeiten] Siehe auch

(C++11)(entfernt in C++20)(C++17)
leitet den Ergebnistyp der Invokation eines aufrufbaren Objekts mit einer Reihe von Argumenten ab
(Klassenvorlage) [bearbeiten]
berechnet den Werttyp eines indirectly_readable Typs mittels Projektion
(Alias-Vorlage)[bearbeiten]