Namespaces
Variants

C++ standard libraries extensions, version 2

From cppreference.net

La version 2 des Extensions C++ pour les fondamentaux de la bibliothèque, ISO/IEC TS 19568:2017, définit les nouveaux composants suivants pour la bibliothèque standard C++, en plus de ceux définis dans la version 1 :

Table des matières

L'idiome de détection en C++

Défini dans l'en-tête <experimental/type_traits>
modèles d'alias qui détectent si un template-id est bien formé
(modèle d'alias)
type de classe retourné par detected_t en cas d'échec
(classe)

Un wrapper à propagation const pour les objets de type pointeur

Défini dans l'en-tête <experimental/propagate_const>
un wrapper à propagation de constance pour les objets de type pointeur
(modèle de classe)

Pointeurs non propriétaires

Défini dans l'en-tête <experimental/memory>
une classe représentant un pointeur non propriétaire
(modèle de classe)

std::array création

Défini dans l'en-tête <experimental/array>
(library fundamentals TS v2)
crée un objet std::array dont la taille et optionnellement le type d'élément sont déduits des arguments
(modèle de fonction)

ostream_joiner

Défini dans l'en-tête <experimental/iterator>
un itérateur de sortie qui écrit des éléments successifs dans un flux de sortie, en séparant les éléments adjacents par un délimiteur
(modèle de classe)

Fonctions simples de génération de nombres aléatoires

Un moteur par thread de type std::default_random_engine , initialisé à un état imprévisible, est maintenu pour chaque thread et utilisé par les fonctions ci-dessous.

Défini dans l'en-tête <experimental/random>
génère un entier aléatoire dans l'intervalle spécifié
(modèle de fonction)
réinitialise le moteur aléatoire par thread
(fonction)
Défini dans l'en-tête <experimental/algorithm>
sélectionne n éléments aléatoires d'une séquence
(modèle de fonction)
réordonne aléatoirement les éléments dans un intervalle
(modèle de fonction)

Macros de test de fonctionnalités

Défini dans l'en-tête <experimental/type_traits>
__cpp_lib_experimental_logical_traits
une valeur d'au moins 201511 indique que les traits de type d'opérateurs logiques sont pris en charge
(constante de macro)
__cpp_lib_experimental_detect
une valeur d'au moins 201505 indique que l'idiome de détection est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/propagate_const>
__cpp_lib_experimental_propagate_const
une valeur d'au moins 201505 indique que propagate_const est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/functional>
__cpp_lib_experimental_not_fn
une valeur d'au moins 201406 indique que not_fn est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/memory>
__cpp_lib_experimental_observer_ptr
une valeur d'au moins 201411 indique que observer_ptr est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/array>
__cpp_lib_experimental_make_array
une valeur d'au moins 201505 indique que make_array est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/iterator>
__cpp_lib_experimental_ostream_joiner
une valeur d'au moins 201411 indique que ostream_joiner est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/vector>
__cpp_lib_experimental_erase_if
une valeur d'au moins 201411 indique que l'effacement uniforme des conteneurs est pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/numeric>
__cpp_lib_experimental_gcd_lcm
une valeur d'au moins 201411 indique que gcd et lcm sont pris en charge
(constante de macro)
Défini dans l'en-tête <experimental/random>
__cpp_lib_experimental_randint
une valeur d'au moins 201511 indique que randint et les fonctions associées sont prises en charge
(constante de macro)
Défini dans l'en-tête <experimental/source_location>
__cpp_lib_experimental_source_location
une valeur d'au moins 201505 indique que source_location est pris en charge
(constante de macro)

Intégré dans C++17

Les composants suivants de la bibliothèque fondamentale v2 ont été adoptés dans la norme C++17.

Défini dans l'en-tête <experimental/type_traits>
alias template variadique pour void
(alias template)
Défini dans l'en-tête <experimental/type_traits>
métafonction ET logique variadique
(class template)
métafonction OU logique variadique
(class template)
métafonction NON logique
(class template)
Défini dans l'en-tête <experimental/functional>
crée un objet fonction qui retourne le complément du résultat de l'objet fonction qu'il contient
(function template)
Défini dans l'en-tête <experimental/numeric>
constexpr function template retournant le plus grand commun diviseur de deux entiers
(function template)
constexpr function template retournant le plus petit commun multiple de deux entiers
(function template)

Intégré dans C++20

Les composants suivants de la bibliothèque fondamentale v2 ont été adoptés dans la norme C++20.

Éradication uniforme des conteneurs

Défini dans l'en-tête <experimental/string>
efface tous les éléments égaux à une valeur spécifique d'une std::basic_string
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::basic_string
(modèle de fonction)
Défini dans l'en-tête <experimental/deque>
efface tous les éléments égaux à une valeur spécifique d'une std::deque
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::deque
(modèle de fonction)
Défini dans l'en-tête <experimental/vector>
efface tous les éléments égaux à une valeur spécifique d'un std::vector
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::vector
(modèle de fonction)
Défini dans l'en-tête <experimental/forward_list>
efface tous les éléments égaux à une valeur spécifique d'une std::forward_list
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::forward_list
(modèle de fonction)
Défini dans l'en-tête <experimental/list>
efface tous les éléments égaux à une valeur spécifique d'une std::list
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::list
(modèle de fonction)
Défini dans l'en-tête <experimental/map>
efface tous les éléments satisfaisant un prédicat d'un std::map
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::multimap
(modèle de fonction)
Défini dans l'en-tête <experimental/set>
supprime tous les éléments satisfaisant un prédicat d'un std::set
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::multiset
(modèle de fonction)
Défini dans l'en-tête <experimental/unordered_map>
efface tous les éléments satisfaisant un prédicat d'un std::unordered_map
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::unordered_multimap
(modèle de fonction)
Défini dans l'en-tête <experimental/unordered_set>
efface tous les éléments satisfaisant un prédicat d'un std::unordered_set
(modèle de fonction)
efface tous les éléments satisfaisant un prédicat d'un std::unordered_multiset
(modèle de fonction)

Capture d'informations du code source

Défini dans l'en-tête <experimental/source_location>
une classe représentant des informations sur le code source, telles que les noms de fichiers, les numéros de ligne et les noms de fonctions
(classe)

std::array conversion

Défini dans l'en-tête <experimental/array>
crée un objet std::array à partir d'un tableau natif
(modèle de fonction)