Namespaces
Variants

Deduktionsleitfäden für std::function_ref

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basis-Typen, RTTI)
Feature-Test-Makros der Bibliothek (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinen-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 Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
Funktionsobjekte
Funktionsaufruf
(C++17)(C++23)
Identitäts-Funktionsobjekt
(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 Header <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</*see below*/>;
(2) (seit C++26)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>;
(3) (seit C++26)
1) Diese Überladung nimmt nur an der Überladungsauflösung teil, falls std::is_function_v<F> true ist.
2) Sei Typ F gleich std::remove_pointer_t<decltype(f)>. Diese Überladung nimmt nur an der Überladungsauflösung teil, falls std::is_function_v<F> true ist. Der abgeleitete Typ ist std::function_ref<F>.
3) Sei Typ F gleich decltype(f). Diese Überladung nimmt nur an der Überladungsauflösung teil, falls :
  • F die Form R(G::*)(A...) noexcept(E) hat (optional cv-qualifiziert, optional noexcept, optional lvalue-reference-qualifiziert) für einen Typ G, oder
  • F die Form M G::* für einen Typ G und einen Objekttyp M hat, wobei dann R als std::invoke_result_t<F, T&>, A... als ein leeres Paket und E als false definiert sei, 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)>.

Beispiel