C++ standard libraries extensions
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 |
|---|
|
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 :