Namespaces
Variants

std::experimental::function<R(Args...)>:: function

From es.cppreference.net
function ( ) noexcept ;
(1) (biblioteca fundamentals TS)
function ( std:: nullptr_t ) noexcept ;
(2) (biblioteca fundamentals TS)
function ( const function & other ) ;
(3) (biblioteca fundamentals TS)
function ( function && other ) ;
(4) (biblioteca fundamentals TS)
template < class F >
function ( F f ) ;
(5) (biblioteca fundamentals TS)
(6)
template < class Alloc >
function ( std:: allocator_arg_t , const Alloc & alloc ) noexcept ;
(TS de biblioteca fundamentals)
function ( std:: allocator_arg_t ,
const allocator_type & alloc ) noexcept ;
(TS de biblioteca fundamentals v3)
(7)
template < class Alloc >

function ( std:: allocator_arg_t , const Alloc & alloc,

std:: nullptr_t ) noexcept ;
(biblioteca fundamentals TS)
function ( std:: allocator_arg_t , const allocator_type & alloc,
std:: nullptr_t ) noexcept ;
(biblioteca fundamentals TS v3)
(8)
template < class Alloc >

function ( std:: allocator_arg_t , const Alloc & alloc,

const function & other ) ;
(biblioteca de fundamentos TS)
function ( std:: allocator_arg_t , const allocator_type & alloc,
const function & other ) ;
(biblioteca de fundamentos TS v3)
(9)
template < class Alloc >

function ( std:: allocator_arg_t , const Alloc & alloc,

function && other ) ;
(especificación técnica de bibliotecas fundamentales)
function ( std:: allocator_arg_t , const allocator_type & alloc,
function && other ) ;
(especificación técnica de bibliotecas fundamentales v3)
(10)
template < class F, class Alloc >
function ( std:: allocator_arg_t , const Alloc & alloc, F f ) ;
(biblioteca fundamentals TS)
function ( std:: allocator_arg_t , const allocator_type & alloc, F f ) ;
(biblioteca fundamentals TS v3)

Construye un std::experimental::function a partir de diversas fuentes.

1,2) Crea una función vacía .
3) Copia el target de other al target de * this . Si other está empty , * this también estará empty después de la llamada.
4) Mueve el objetivo de other al objetivo de * this . Si other está vacío , * this también estará vacío después de la llamada. Después de la construcción, * this almacena una copia de other. get_allocator ( ) . (library fundamentals TS v3)
5) Inicializa el target con una copia de f . Si f es un puntero nulo a función o puntero nulo a miembro, * this quedará empty después de la llamada. Este constructor no participa en la resolución de sobrecarga a menos que f sea Callable para los tipos de argumento Args... y tipo de retorno R .
6-10) Igual que (1-5) excepto que alloc se utiliza para asignar memoria para cualquier estructura de datos interna que la function pueda usar. Estos constructores tratan alloc como un asignador de tipo borrado (ver abajo). (hasta library fundamentals TS v3)

Después de la construcción mediante (1-5) , this - > get_memory_resource ( ) devuelve el mismo valor que std:: experimental :: pmr :: get_default_resource ( ) durante la construcción.

(library fundamentals TS)
(until library fundamentals TS v3)

Después de la construcción mediante (1-3) y (5) , * this almacena un std:: pmr :: polymorphic_allocator <> construido por defecto.

(library fundamentals TS v3)

Cuando el target es un puntero a función o un std::reference_wrapper , se garantiza la optimización de objetos pequeños, es decir, estos targets siempre se almacenan directamente dentro del objeto std::experimental::function , sin que se produzca asignación dinámica. Otros objetos grandes pueden construirse en almacenamiento asignado dinámicamente y ser accedidos por el objeto std::experimental::function a través de un puntero.

Si un constructor mueve o copia un objeto función, incluyendo una instancia de std::experimental::function , entonces esa operación de movimiento o copia se realiza mediante construcción con asignador con el asignador this - > get_memory_resource ( ) (hasta library fundamentals TS v3) this - > get_allocator ( ) (library fundamentals TS v3) .

Contenidos

Asignador con borrado de tipo

Los constructores de function que toman un argumento de asignador alloc tratan ese argumento como un asignador con tipo borrado. El puntero al recurso de memoria utilizado por function para asignar memoria se determina usando el argumento del asignador (si se especifica) de la siguiente manera:

Tipo de alloc Valor del puntero al recurso de memoria
No existente (no se especificó un asignador en el momento de la construcción) El valor de std:: experimental :: pmr :: get_default_resource ( ) en el momento de la construcción.
std::nullptr_t El valor de std:: experimental :: pmr :: get_default_resource ( ) en el momento de la construcción.
Un tipo puntero convertible a
std:: experimental :: pmr :: memory_resource *
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )
Una especialización de
std::experimental::pmr::polymorphic_allocator
alloc. resource ( )
Cualquier otro tipo que cumpla con los requisitos de Allocator Un puntero a un valor de tipo std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) , donde A es el tipo de alloc . El puntero permanece válido solo durante la vida útil del objeto function .
Ninguno de los anteriores El programa está mal formado.

Parámetros

other - el objeto función utilizado para inicializar * this
f - un elemento invocable utilizado para inicializar * this
alloc - un asignador utilizado para la asignación interna de memoria
Requisitos de tipo
-
F debe cumplir con los requisitos de Callable y CopyConstructible .

Excepciones

3,8) No lanza excepción si el target de other es un puntero a función o un std::reference_wrapper , de lo contrario puede lanzar std::bad_alloc o cualquier excepción lanzada por el constructor de copia del objeto invocable almacenado.
4) (ninguno)
5,10) No lanza excepciones si f es un puntero a función o un std::reference_wrapper , de lo contrario puede lanzar std::bad_alloc o cualquier excepción lanzada por el constructor de copia del objeto invocable almacenado.
9) (ninguno)

Ejemplo