std::function_ref::function_ref
Depuis fr.cppreference.net
template< class F >
function_ref( F* f ) noexcept;
|
(1) | (depuis C++26) |
template< class F >
function_ref( F&& f ) noexcept;
|
(2) | (depuis C++26) |
template< auto f >
function_ref( std::nontype_t<f> ) noexcept;
|
(3) | (depuis C++26) |
template< auto f, class U >
function_ref( std::nontype_t<f>, U&& obj ) noexcept;
|
(4) | (depuis C++26) |
template< auto f, class T >
function_ref( std::nontype_t<f>, /*cv*/ T* obj ) noexcept;
|
(5) | (depuis C++26) |
function_ref( const function_ref& other ) = default;
|
(6) | (depuis C++26) |
Crée un nouveau std::function_ref.
1) Initialise
bound-entity avec f, et thunk-ptr avec l'adresse d'une fonction thunk. Le comportement est indéfini si f est un pointeur nul.
- Cette surcharge participe à la résolution de surcharge seulement si
std::is_function_v<F>et/*is-invocable-using*/<F>sonttrue.
2) Initialise
bound-entity avec std::addressof(f), et thunk-ptr avec l'adresse d'une fonction thunk.
- Soit
T=std::remove_reference_t<F>. Cette surcharge participe à la résolution de surcharge seulement si :std::remove_cvref_t<F>n'est pas le même type quefunction_ref,std::is_member_pointer_v<T>estfalse, et/*is-invocable-using*/</*cv*/ T&>esttrue.
3) Initialise
bound-entity avec un pointeur vers un objet non spécifié ou une valeur de pointeur nul, et thunk-ptr avec l'adresse d'une fonction thunk.
- Soit
F=decltype(f). Cette surcharge participe à la résolution de surcharge seulement si/*is-invocable-using*/<F>esttrue. - Le programme est mal formé si
f != nullptrestfalsealors questd::is_pointer_v<F> || std::is_member_pointer_v<F>esttrue.
4) Initialise
bound-entity avec std::addressof(obj), et thunk-ptr avec l'adresse d'une fonction thunk.
- Soit
T=std::remove_reference_t<U>etF=decltype(f). Cette surcharge participe à la résolution de surcharge seulement si :std::is_rvalue_reference_v<U&&>estfalse, et/*is-invocable-using*/<F, /*cv*/ T&>esttrue.
- Le programme est mal formé si
f != nullptrestfalsealors questd::is_pointer_v<F> || std::is_member_pointer_v<F>esttrue.
5) Initialise
bound-entity avec obj, et thunk-ptr avec l'adresse d'une fonction thunk. Le comportement est indéfini si obj est un pointeur nul alors que std::is_member_pointer_v<F> est true.
- Soit
F=decltype(f). Cette surcharge participe à la résolution de surcharge seulement si/*is-invocable-using*/<F, /*cv*/ T*>esttrue. - Le programme est mal formé si
f != nullptrestfalsealors questd::is_pointer_v<F> || std::is_member_pointer_v<F>esttrue.
6) Constructeur de copie par défaut copie
bound-entity et thunk-ptr de other.L'adresse d'une fonction thunk est utilisée pour initialiser thunk-ptr de sorte qu'un appel à thunk(bound-entity, call-args...) soit équivalent à l'expression :
| Surcharges | Équivalence à l'expression |
|---|---|
| (1,3) | std::invoke_r<R>(f, call-args...)
|
| (2) | std::invoke_r<R>(static_cast<cvT&>(f), call-args...)
|
| (4) | std::invoke_r<R>(f, static_cast<cvT&>(obj), call-args...)
|
| (5) | std::invoke_r<R>(f, obj, call-args...)
|
/*is-invocable-using*/<T...> est true si et seulement si :
std::is_nothrow_invocable_r_v<R, T..., Args...>esttruesi noex esttrue, oustd::is_invocable_r_v<R, T..., Args...>esttrue
Paramètres
| other | - |
autre
function_ref
à copier
|
| f | - | une fonction ou un Callable à encapsuler |
| obj | - | un objet ou pointeur à lier |
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
construit un nouvel objet
std::move_only_function
(fonction membre publique de
std::move_only_function
)
|