Namespaces
Variants

guides de déduction pour std::function_ref

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (obsolète en C++20)
 
Objets fonction
Invocation de fonction
(C++17)(C++23)
Objet fonction identité
(C++20)
Wrappers d'opérateurs transparents
(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)

Anciens binders et adaptateurs
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)
(jusqu'à C++17*)  
(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)

(jusqu'à C++17*)
(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)(jusqu'à C++17*)
(jusqu'à C++20*)
(jusqu'à C++20*)
 
 
Défini dans l'en-tête <functional>
template< class F >
function_ref( F* ) -> function_ref<F>;
(1) (depuis C++26)
template< auto f >
function_ref( std::nontype_t<f> ) -> function_ref</*see below*/>;
(2) (depuis C++26)
template< auto f, class T >
function_ref( std::nontype_t<f>, T&& ) -> function_ref</*see below*/>;
(3) (depuis C++26)
1) Cette surcharge participe à la résolution de surcharge seulement si std::is_function_v<F> est true.
2) Soit le type F égal à std::remove_pointer_t<decltype(f)>. Cette surcharge participe à la résolution de surcharge seulement si std::is_function_v<F> est true. Le type déduit est std::function_ref<F>.
3) Soit le type F égal à decltype(f). Cette surcharge participe à la résolution de surcharge seulement si :
  • F est de la forme R(G::*)(A...) noexcept(E) (éventuellement qualifié cv, éventuellement noexcept, éventuellement qualifié référence lvalue) pour un type G, ou
  • F est de la forme M G::* pour un type G et un type d'objet M, auquel cas soit R égal à std::invoke_result_t<F, T&>, A... soit un pack vide, et E soit false, ou
  • F est de la forme R(*)(G, A...) noexcept(E) pour un type G.
Le type déduit est std::function_ref<R(A...) noexcept(E)>.

Exemple