Namespaces
Variants

std::any

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Tausch und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Definiert in Header <any>
class any;
(seit C++17)

Die Klasse any beschreibt einen typsicheren Container für einzelne Werte eines beliebigen kopierkonstruierbaren Typs.

1) Ein Objekt der Klasse any speichert eine Instanz eines beliebigen Typs, der die Konstruktoranforderungen erfüllt, oder ist leer; dies wird als der Zustand des any-Objekts bezeichnet. Die gespeicherte Instanz wird als enthaltenes Objekt bezeichnet. Zwei Zustände sind äquivalent, wenn sie beide leer sind oder wenn beide nicht leer sind und die enthaltenen Objekte äquivalent sind.
2) Die Nicht-Member-any_cast-Funktionen bieten typsicheren Zugriff auf das enthaltene Objekt.

Implementierungen werden ermutigt, dynamische Allokationen für kleine Objekte zu vermeiden, aber eine solche Optimierung darf nur auf Typen angewendet werden, für die std::is_nothrow_move_constructible true zurückgibt.

Memberfunktionen

konstruiert ein any Objekt
(öffentliche Elementfunktion)
weist ein any Objekt zu
(öffentliche Elementfunktion)
zerstört ein any Objekt
(öffentliche Elementfunktion)
Modifikatoren
ändert das enthaltene Objekt, konstruiert das neue Objekt direkt
(öffentliche Elementfunktion)
zerstört das enthaltene Objekt
(öffentliche Elementfunktion)
tauscht zwei any Objekte
(öffentliche Elementfunktion)
Beobachter
prüft, ob das Objekt einen Wert enthält
(öffentliche Elementfunktion)
gibt die typeid des enthaltenen Werts zurück
(öffentliche Elementfunktion)

Nicht-Member-Funktionen

spezialisiert den std::swap Algorithmus
(Funktion)
(C++17)
typsicherer Zugriff auf das enthaltene Objekt
(Funktionstemplate)
(C++17)
erstellt ein any Objekt
(Funktionstemplate)

Hilfsklassen

Exception, die von den wertrückgebenden Formen von any_cast bei Typinkongruenz ausgelöst wird
(Klasse)

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_any 201606L (C++17) std::any

Beispiel

#include <any>
#include <iostream>
int main()
{
    std::cout << std::boolalpha;
    // beliebiger Typ
    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';
    // ungültiger Cast
    try
    {
        a = 1;
        std::cout << std::any_cast<float>(a) << '\n';
    }
    catch (const std::bad_any_cast& e)
    {
        std::cout << e.what() << '\n';
    }
    // hat Wert
    a = 2;
    if (a.has_value())
        std::cout << a.type().name() << ": " << std::any_cast<int>(a) << '\n';
    // zurücksetzen
    a.reset();
    if (!a.has_value())
        std::cout << "kein Wert\n";
    // Zeiger auf enthaltene Daten
    a = 3;
    int* i = std::any_cast<int>(&a);
    std::cout << *i << '\n';
}

Mögliche Ausgabe:

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

Siehe auch

(C++11)
kopierbarer Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassentemplate)
Nur-verschiebbarer Wrapper für jedes aufrufbare Objekt, das Qualifier in einer gegebenen Aufrufsignatur unterstützt
(Klassentemplate)
(C++17)
eine typsichere, diskriminierte Union
(Klassentemplate)
(C++17)
ein Wrapper, der möglicherweise ein Objekt enthält
(Klassentemplate)
(C++11)
intelligenter Zeiger mit eindeutiger Objektbesitzsemantik
(Klassentemplate)
(C++26)
ein Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)
ein polymorpher Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)