Namespaces
Variants

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

From cppreference.net
function ( ) noexcept ;
(1) (spécifications techniques des bibliothèques fondamentales)
function ( std:: nullptr_t ) noexcept ;
(2) (spécifications techniques des bibliothèques fondamentales)
function ( const function & other ) ;
(3) (spécifications techniques des bibliothèques fondamentales)
function ( function && other ) ;
(4) (spécifications techniques des bibliothèques fondamentales)
template < class F >
function ( F f ) ;
(5) (spécifications techniques des bibliothèques fondamentales)
(6)
template < class Alloc >
function ( std:: allocator_arg_t , const Alloc & alloc ) noexcept ;
(spécifications techniques des bibliothèques fondamentales)
function ( std:: allocator_arg_t ,
const allocator_type & alloc ) noexcept ;
(spécifications techniques des bibliothèques fondamentales v3)
(7)
template < class Alloc >

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

std:: nullptr_t ) noexcept ;
(spécifications techniques des bibliothèques fondamentales)
function ( std:: allocator_arg_t , const allocator_type & alloc,
std:: nullptr_t ) noexcept ;
(spécifications techniques des bibliothèques fondamentales v3)
(8)
template < class Alloc >

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

const function & other ) ;
(spécifications techniques des bibliothèques fondamentales)
function ( std:: allocator_arg_t , const allocator_type & alloc,
const function & other ) ;
(spécifications techniques des bibliothèques fondamentales v3)
(9)
template < class Alloc >

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

function && other ) ;
(spécifications techniques des bibliothèques fondamentales)
function ( std:: allocator_arg_t , const allocator_type & alloc,
function && other ) ;
(spécifications techniques des bibliothèques fondamentales v3)
(10)
template < class F, class Alloc >
function ( std:: allocator_arg_t , const Alloc & alloc, F f ) ;
(spécifications techniques des bibliothèques fondamentales)
function ( std:: allocator_arg_t , const allocator_type & alloc, F f ) ;
(spécifications techniques des bibliothèques fondamentales v3)

Construit un std::experimental::function à partir de diverses sources.

1,2) Crée une fonction vide .
3) Copie la cible de other vers la cible de * this . Si other est vide , * this sera également vide après l'appel.
4) Déplace la cible de other vers la cible de * this . Si other est vide , * this sera également vide après l'appel. Après la construction, * this stocke une copie de other. get_allocator ( ) . (library fundamentals TS v3)
5) Initialise la cible avec une copie de f . Si f est un pointeur nul vers une fonction ou un pointeur nul vers un membre, * this sera vide après l'appel. Ce constructeur ne participe pas à la résolution de surcharge sauf si f est Callable pour les types d'arguments Args... et le type de retour R .
6-10) Identique à (1-5) sauf que alloc est utilisé pour allouer la mémoire pour toute structure de données interne que la function pourrait utiliser. Ces constructeurs traitent alloc comme un allocateur à effacement de type (voir ci-dessous). (jusqu'à la bibliothèque fundamentals TS v3)

Après construction via (1-5) , this - > get_memory_resource ( ) retourne la même valeur que std:: experimental :: pmr :: get_default_resource ( ) pendant la construction.

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

Après construction via (1-3) et (5) , * this stocke un std:: pmr :: polymorphic_allocator <> construit par défaut.

(library fundamentals TS v3)

Lorsque la cible est un pointeur de fonction ou un std::reference_wrapper , l'optimisation des petits objets est garantie, c'est-à-dire que ces cibles sont toujours stockées directement à l'intérieur de l'objet std::experimental::function , aucune allocation dynamique n'a lieu. D'autres objets volumineux peuvent être construits dans la mémoire allouée dynamiquement et accessibles par l'objet std::experimental::function via un pointeur.

Si un constructeur déplace ou copie un objet fonction, y compris une instance de std::experimental::function , alors ce déplacement ou cette copie est effectué par construction avec allocateur avec l'allocateur this - > get_memory_resource ( ) (jusqu'à la bibliothèque fundamentals TS v3) this - > get_allocator ( ) (bibliothèque fundamentals TS v3) .

Table des matières

Allocateur à effacement de type

Les constructeurs de function prenant un argument d'allocateur alloc traitent cet argument comme un allocateur à effacement de type. Le pointeur de ressource mémoire utilisé par function pour allouer de la mémoire est déterminé en utilisant l'argument d'allocateur (s'il est spécifié) comme suit :

Type de alloc Valeur du pointeur de ressource mémoire
Inexistant (aucun allocateur spécifié au moment de la construction) La valeur de std:: experimental :: pmr :: get_default_resource ( ) au moment de la construction.
std::nullptr_t La valeur de std:: experimental :: pmr :: get_default_resource ( ) au moment de la construction.
Un type pointeur convertible en
std:: experimental :: pmr :: memory_resource *
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc )
Une spécialisation de
std::experimental::pmr::polymorphic_allocator
alloc. resource ( )
Tout autre type satisfaisant aux exigences Allocator Un pointeur vers une valeur de type std:: experimental :: pmr :: resource_adaptor < A > ( alloc ) , où A est le type de alloc . Le pointeur reste valide uniquement pendant la durée de vie de l'objet function .
Aucun des cas ci-dessus Le programme est mal formé.

Paramètres

other - l'objet fonction utilisé pour initialiser * this
f - un appelable utilisé pour initialiser * this
alloc - un allocateur utilisé pour l'allocation mémoire interne
Exigences de type
-
F doit satisfaire aux exigences de Callable et CopyConstructible .

Exceptions

3,8) Ne lance pas d'exception si other a pour target un pointeur de fonction ou un std::reference_wrapper , sinon peut lancer std::bad_alloc ou toute exception lancée par le constructeur de copie de l'objet appelable stocké.
4) (aucun)
5,10) Ne lance pas d'exception si f est un pointeur de fonction ou un std::reference_wrapper , sinon peut lancer std::bad_alloc ou toute exception levée par le constructeur de copie de l'objet appelable stocké.
9) (aucun)

Exemple