Namespaces
Variants

C++ standard libraries extensions

From cppreference.net

La version 1 des Extensions C++ pour les fondamentaux de la bibliothèque, ISO/IEC TS 19568:2015 définit les nouveaux composants suivants pour la bibliothèque standard C++ :

Table des matières

Non sélectionné pour inclusion dans C++17

Les composants suivants de l'ISO/CEI TS 19568:2015 n'ont pas été retenus pour inclusion dans C++17.

Versions modifiées des classes existantes pour prendre en charge les allocateurs à effacement de type

Défini dans l'en-tête <experimental/functional>
une version modifiée de std::function avec support pour les allocateurs à effacement de type
(modèle de classe)
Défini dans l'en-tête <experimental/future>
une version modifiée de std::promise avec support pour les allocateurs à effacement de type
(modèle de classe)
une version modifiée de std::packaged_task avec support pour les allocateurs à effacement de type
(modèle de classe)

Adaptateurs de ressources mémoire

adapte un allocateur en une memory_resource
(alias de modèle)

Utilitaires généraux

Défini dans l'en-tête <experimental/utility>
type de substitution pour l'effacement de type, comme dans les allocateurs
(classe)
Défini dans l'en-tête <experimental/type_traits>
déduit le type de fonction implicite de l'objet appelable lorsqu'il est appelé avec les types d'arguments donnés
(modèle de classe)

Macros de test de fonctionnalités

Défini dans l'en-tête <experimental/optional>
__cpp_lib_experimental_optional
une valeur d'au moins 201411 indique que le type optionnel est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/any>
__cpp_lib_experimental_any
une valeur d'au moins 201411 indique que le type any est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/string_view>
__cpp_lib_experimental_string_view
une valeur d'au moins 201411 indique que le modèle basic_string_view est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/tuple>
__cpp_lib_experimental_apply
une valeur d'au moins 201402 indique que la fonction apply() de tuple est prise en charge
(constante de macro)
Défini dans l'en-tête <experimental/type_traits>
__cpp_lib_experimental_type_trait_variable_templates
une valeur d'au moins 201402 indique que les traits de type de modèles de variables sont pris en charge
(constante de macro)
__cpp_lib_experimental_invocation_type
une valeur d'au moins 201406 indique que les traits de type d'invocation sont pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/functional>
__cpp_lib_experimental_boyer_moore_searching
une valeur d'au moins 201411 indique que des algorithmes de recherche supplémentaires sont pris en charge
(constante de macro)
__cpp_lib_experimental_function_erased_allocator
une valeur d'au moins 201406 indique que l'allocateur à type effacé pour std::function est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/future>
__cpp_lib_experimental_promise_erased_allocator
une valeur d'au moins 201406 indique que l'allocateur à type effacé pour std::promise est pris en charge
(constante de macro)
__cpp_lib_experimental_packaged_task_erased_allocator
une valeur d'au moins 201406 indique que l'allocateur à type effacé pour std::packaged_task est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/memory>
__cpp_lib_experimental_shared_ptr_arrays
une valeur d'au moins 201406 indique que les tableaux shared_ptr sont pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/memory_resource>
__cpp_lib_experimental_memory_resources
une valeur d'au moins 201402 indique que les ressources mémoire polymorphes sont prises en charge
(constante de macro)
Défini dans l'en-tête <experimental/algorithm>
__cpp_lib_experimental_sample
une valeur de 201402 indique que l'algorithme sample est pris en charge
(constante de macro)

Intégré dans C++17

Les composants suivants de l'ISO/CEI TS 19568:2015 ont été inclus dans le C++17.

objets optionnels

Défini dans l'en-tête <experimental/optional>
un modèle de classe représentant des objets optionnels
(modèle de classe)

classe any

Défini dans l'en-tête <experimental/any>
un conteneur type-safe pour des valeurs uniques de n'importe quel type
(classe)

string_view

Défini dans l'en-tête <experimental/string_view>
une référence non propriétaire à une chaîne
(modèle de classe)

Allocateurs à effacement de type et polymorphes

Allocateurs polymorphes et ressources mémoire

Les entités dans cette section sont déclarées dans l'espace de noms std::experimental::pmr .

Défini dans l'en-tête <experimental/memory_resource>
une interface abstraite pour les classes qui encapsulent des ressources mémoire
(classe)
un memory_resource thread-safe pour gérer les allocations dans des pools de différentes tailles de blocs
(classe)
un memory_resource non thread-safe pour gérer les allocations dans des pools de différentes tailles de blocs
(classe)
un memory_resource à usage spécial qui libère la mémoire allouée uniquement lorsque la ressource est détruite
(classe)
un allocateur qui prend en charge le polymorphisme à l'exécution basé sur le memory_resource avec lequel il est construit
(modèle de classe)
retourne un memory_resource statique à l'échelle du programme qui utilise operator new et operator delete globaux pour allouer et désallouer la mémoire
(fonction)
retourne un memory_resource statique qui n'effectue aucune allocation
(fonction)
obtient le memory_resource par défaut
(fonction)
définit le memory_resource par défaut
(fonction)

Alias de commodité pour les conteneurs utilisant des allocateurs polymorphes

Alias de commodité et modèles d'alias pour les conteneurs utilisant des allocateurs polymorphes sont fournis dans l'espace de noms std::experimental::pmr pour les modèles de classe suivants de la bibliothèque standard :

Liste des modèles de conteneurs pour lesquels des alias pratiques sont fournis

Prise en charge des tableaux pour shared_ptr

Défini dans l'en-tête <experimental/memory>
Classe Description
une version modifiée de std::shared_ptr qui prend en charge les tableaux
(modèle de classe)
une version modifiée de std::weak_ptr qui prend en charge les tableaux
(modèle de classe)

Algorithmes d'échantillonnage et de recherche

Défini dans l'en-tête <experimental/algorithm>
sélectionne n éléments aléatoires d'une séquence
(modèle de fonction)
applique un Searcher à une séquence
(modèle de fonction)
Défini dans l'en-tête <experimental/functional>
implémentation de l'algorithme de recherche standard de la bibliothèque C++
(modèle de classe)
fonction d'aide pour créer un default_searcher
(modèle de fonction)
implémentation de l'algorithme de recherche Boyer-Moore
(modèle de classe)
fonction d'aide pour créer un boyer_moore_searcher
(modèle de fonction)
implémentation de l'algorithme de recherche Boyer-Moore-Horspool
(modèle de classe)
fonction d'aide pour créer un boyer_moore_horspool_searcher
(modèle de fonction)

Utilitaires généraux

Défini dans l'en-tête <experimental/tuple>
appelle une fonction avec un tuple d'arguments
(modèle de fonction)

En outre, la TS fournit de nombreux constexpr modèles de variables pour les traits de type suivants et autres modèles de classes dans la bibliothèque standard :

Liste des traits de type et autres modèles de classe pour lesquels des modèles de variables sont fournis