std::function_ref::function_ref
De es.cppreference.net
template< class F >
function_ref( F* f ) noexcept;
|
(1) | (desde C++26) |
template< class F >
function_ref( F&& f ) noexcept;
|
(2) | (desde C++26) |
template< auto f >
function_ref( std::nontype_t<f> ) noexcept;
|
(3) | (desde C++26) |
template< auto f, class U >
function_ref( std::nontype_t<f>, U&& obj ) noexcept;
|
(4) | (desde C++26) |
template< auto f, class T >
function_ref( std::nontype_t<f>, /*cv*/ T* obj ) noexcept;
|
(5) | (desde C++26) |
function_ref( const function_ref& other ) = default;
|
(6) | (desde C++26) |
Crea un nuevo std::function_ref.
1) Inicializa
bound-entity con f, y thunk-ptr con la dirección de una función thunk. El comportamiento no está definido si f es un puntero nulo.
- Esta sobrecarga participa en la resolución de sobrecarga solo si tanto
std::is_function_v<F>como/*is-invocable-using*/<F>sontrue.
2) Inicializa
bound-entity con std::addressof(f), y thunk-ptr con la dirección de una función thunk.
- Sea
Tigual astd::remove_reference_t<F>. Esta sobrecarga participa en la resolución de sobrecarga solo si :std::remove_cvref_t<F>no es del mismo tipo quefunction_ref,std::is_member_pointer_v<T>esfalse, y/*is-invocable-using*/</*cv*/ T&>estrue.
3) Inicializa
bound-entity con un puntero a un objeto no especificado o un valor de puntero nulo, y thunk-ptr con la dirección de una función thunk.
- Sea
Figual adecltype(f). Esta sobrecarga participa en la resolución de sobrecarga solo si/*is-invocable-using*/<F>estrue. - El programa está mal formado si
f != nullptresfalsecuandostd::is_pointer_v<F> || std::is_member_pointer_v<F>estrue.
4) Inicializa
bound-entity con std::addressof(obj), y thunk-ptr con la dirección de una función thunk.
- Sea
Tigual astd::remove_reference_t<U>yFigual adecltype(f). Esta sobrecarga participa en la resolución de sobrecarga solo si :std::is_rvalue_reference_v<U&&>esfalse, y/*is-invocable-using*/<F, /*cv*/ T&>estrue.
- El programa está mal formado si
f != nullptresfalsecuandostd::is_pointer_v<F> || std::is_member_pointer_v<F>estrue.
5) Inicializa
bound-entity con obj, y thunk-ptr con la dirección de una función thunk. El comportamiento no está definido si obj es un puntero nulo cuando std::is_member_pointer_v<F> es true.
- Sea
Figual adecltype(f). Esta sobrecarga participa en la resolución de sobrecarga solo si/*is-invocable-using*/<F, /*cv*/ T*>estrue. - El programa está mal formado si
f != nullptresfalsecuandostd::is_pointer_v<F> || std::is_member_pointer_v<F>estrue.
6) El constructor de copia por defecto copia el
bound-entity y thunk-ptr de other.La dirección de una función thunk se usa para inicializar thunk-ptr de manera que una llamada a thunk(bound-entity, call-args...) sea equivalente a expresión a:
| Sobrecargas | Equivalencia de expresión |
|---|---|
| (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...> es true si y solo si:
std::is_nothrow_invocable_r_v<R, T..., Args...>estruesi noex estrue, ostd::is_invocable_r_v<R, T..., Args...>estrue
Parámetros
| other | - |
otro
function_ref
desde el cual copiar
|
| f | - | una función u objeto Callable a envolver |
| obj | - | un objeto o puntero a vincular |
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
construye un nuevo objeto
std::move_only_function
(función miembro pública de
std::move_only_function
)
|