Namespaces
Variants

deduction guides for std::function_ref

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until 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 < /*voir ci-dessous*/ > ;
(2) (depuis C++26)
template < auto f, class T >
function_ref ( std:: nontype_t < f > , T && ) - > function_ref < /*voir ci-dessous*/ > ;
(3) (depuis C++26)
1) Cette surcharge participe à la résolution de surcharge uniquement si std:: is_function_v < F > est true .
2) Soit le type F défini comme 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 défini comme decltype ( f ) . Cette surcharge participe à la résolution de surcharge seulement si :
  • F est de la forme R ( G :: * ) ( A... ) noexcept ( E ) (optionnellement qualifié cv, optionnellement noexcept, optionnellement qualifié référence lvalue) pour un type G , ou
  • F est de la forme M G :: * pour un type G et un type objet M , auquel cas soit R défini comme std:: invoke_result_t < F, T & > , A... un pack vide, et E faux, 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