Namespaces
Variants

std::any

Depuis fr.cppreference.net
 
 
Bibliothèque d'utilitaires
Support linguistique
Support des types (types de base, RTTI)
Macros de test de fonctionnalités de la bibliothèque (C++20)
Utilitaires de programme
Fonctions variadiques
Support des coroutines (C++20)
Support des contrats (C++26)
Comparaison à trois voies
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Utilitaires généraux
Opérateurs relationnels (déprécié en C++20)
 
 
Défini dans l'en-tête <any>
class any;
(depuis C++17)

La classe any décrit un conteneur type-safe pour des valeurs uniques de tout type constructible par copie.

1) Un objet de la classe any stocke une instance de tout type qui satisfait les exigences du constructeur ou est vide, et ceci est appelé l'état de l'objet de la classe any. L'instance stockée est appelée l'objet contenu. Deux états sont équivalents s'ils sont tous deux vides ou si tous deux ne sont pas vides et si les objets contenus sont équivalents.
2) Les fonctions non membres any_cast fournissent un accès type-safe à l'objet contenu.

Il est recommandé aux implémentations d'éviter les allocations dynamiques pour les petits objets, mais une telle optimisation ne peut être appliquée qu'aux types pour lesquels std::is_nothrow_move_constructible renvoie true.

Fonctions membres

construit un objet any
(fonction membre publique)
assigne un objet any
(fonction membre publique)
détruit un objet any
(fonction membre publique)
Modificateurs
modifie l'objet contenu, en construisant le nouvel objet directement
(fonction membre publique)
détruit l'objet contenu
(fonction membre publique)
échange deux objets any
(fonction membre publique)
Observateurs
vérifie si l'objet contient une valeur
(fonction membre publique)
retourne le typeid de la valeur contenue
(fonction membre publique)

Fonctions non membres

spécialise l'algorithme std::swap
(fonction)
(C++17)
accès type-safe à l'objet contenu
(modèle de fonction)
(C++17)
crée un objet any
(modèle de fonction)

Classes d'assistance

exception levée par les formes de retour de valeur de any_cast en cas d'incompatibilité de type
(classe)

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_any 201606L (C++17) std::any

Exemple

#include <any>
#include <iostream>
int main()
{
    std::cout << std::boolalpha;
    // type quelconque
    std::any a = 1;
    std::cout << a.type().name() << ": " << std::any_cast<int>(a) << '\n';
    a = 3.14;
    std::cout << a.type().name() << ": " << std::any_cast<double>(a) << '\n';
    a = true;
    std::cout << a.type().name() << ": " << std::any_cast<bool>(a) << '\n';
    // conversion incorrecte
    try
    {
        a = 1;
        std::cout << std::any_cast<float>(a) << '\n';
    }
    catch (const std::bad_any_cast& e)
    {
        std::cout << e.what() << '\n';
    }
    // possède une valeur
    a = 2;
    if (a.has_value())
        std::cout << a.type().name() << ": " << std::any_cast<int>(a) << '\n';
    // réinitialisation
    a.reset();
    if (!a.has_value())
        std::cout << "aucune valeur\n";
    // pointeur vers les données contenues
    a = 3;
    int* i = std::any_cast<int>(&a);
    std::cout << *i << '\n';
}

Sortie possible :

int: 1
double: 3.14
bool: true
bad any_cast
int: 2
no value
3

Voir aussi

(C++11)
enveloppe copiable de tout objet appelable copiable
(modèle de classe)
enveloppe non copiable de tout objet appelable prenant en charge les qualificateurs dans une signature d'appel donnée
(modèle de classe)
(C++17)
union discriminée type-safe
(modèle de classe)
(C++17)
enveloppe pouvant contenir ou non un objet
(modèle de classe)
(C++11)
pointeur intelligent avec sémantique de propriété exclusive
(modèle de classe)
(C++26)
enveloppe contenant un objet alloué dynamiquement avec sémantique de valeur
(modèle de classe)
enveloppe polymorphe contenant un objet alloué dynamiquement avec sémantique de valeur
(modèle de classe)