C++ standard libraries extensions, version 2
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) |
|