Namensräume
Varianten
Aktionen

Deduktionshilfen für std::function_ref

Von cppreference.com
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

Allgemeine Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
 
Funktionsobjekte
Funktionsaufruf
(C++17)(C++23)
Identitätsfunktions-Objekt
(C++20)
Transparente Operator-Wrapper
(C++14)
(C++14)
(C++14)
(C++14)  
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)
(C++14)

Alte Binder und Adaptoren
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
(bis C++17*)(bis C++17*)
(bis C++17*)(bis C++17*)

(bis C++17*)
(bis C++17*)(bis C++17*)(bis C++17*)(bis C++17*)
(bis C++20*)
(bis C++20*)
 
 
Definiert in der Header-Datei <functional>
template< class F >
function_ref( F* ) -> function_ref<F>;
(1) (seit C++26)
template< auto f >
function_ref( std::nontype_t<f> ) -> function_ref</*siehe unten*/>;
(2) (seit C++26)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*siehe unten*/>;
(3) (seit C++26)
1) Diese Überladung nimmt nur an der Auflösung von Überladungen teil, wenn std::is_function_v<F> true ist.
2) Sei der Typ F std::remove_pointer_t<decltype(f)>. Diese Überladung nimmt nur an der Auflösung von Überladungen teil, wenn std::is_function_v<F> true ist. Der abgeleitete Typ ist std::function_ref<F>.
3) Sei der Typ F decltype(f). Diese Überladung nimmt nur an der Auflösung von Überladungen teil, wenn 
  • F die Form R(G::*)(A...) noexcept(E) hat (optional cv-qualifiziert, optional noexcept, optional lvalue-Referenz qualifiziert) für einen Typ G, oder
  • F die Form M G::* für einen Typ G und einen Objekttyp M hat, in diesem Fall sei R std::invoke_result_t<F, T&>, A... ein leeres Pack und E false ist, oder
  • F die Form R(*)(G, A...) noexcept(E) für einen Typ G hat.
Der abgeleitete Typ ist std::function_ref<R(A...) noexcept(E)>.

[bearbeiten] Beispiel