Namensräume
Varianten
Aktionen

std::any

Von cppreference.com
< cpp‎ | utility
 
 
Dienstprogramm-Bibliotheken
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programm-Dienstprogramme
Variadische Funktionen
Coroutine-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 Hilfsmittel
Relationale Operatoren (in C++20 veraltet)
Ganzzahl-Vergleichsfunktionen
(C++20)(C++20)(C++20)  
(C++20)
Swap und Typ-Operationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Gemeinsame Vokabulartypen
(C++11)
(C++17)
any
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



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

Die Klasse any beschreibt einen typsicheren Container für einzelne Werte von jedem kopierkonstruierbaren Typ.

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

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

Inhalt

[edit] Member functions

konstruiert ein any-Objekt
(public member function) [edit]
weist ein any-Objekt zu
(public member function) [edit]
zerstört ein any-Objekt
(public member function) [edit]
Modifizierer
ändert das enthaltene Objekt und konstruiert das neue Objekt direkt
(public member function) [edit]
zerstört das enthaltene Objekt
(public member function) [edit]
tauscht zwei any-Objekte
(public member function) [edit]
Observer
prüft, ob das Objekt einen Wert enthält
(public member function) [edit]
gibt das typeid des enthaltenen Werts zurück
(public member function) [edit]

[edit] Non-member functions

spezialisiert den Algorithmus std::swap
(function) [edit]
(C++17)
typsicherer Zugriff auf das enthaltene Objekt
(function template) [edit]
(C++17)
erstellt ein any-Objekt
(function template) [edit]

[edit] Helper classes

Ausnahme, die von den Rückgabeformen von any_cast bei einem Typ-Mismatch ausgelöst wird
(class) [edit]

[edit] Notes

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

[edit] Example

#include <any>
#include <iostream>
 
int main()
{
    std::cout << std::boolalpha;
 
    // any type
    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';
 
    // bad cast
    try
    {
        a = 1;
        std::cout << std::any_cast<float>(a) << '\n';
    }
    catch (const std::bad_any_cast& e)
    {
        std::cout << e.what() << '\n';
    }
 
    // has value
    a = 2;
    if (a.has_value())
        std::cout << a.type().name() << ": " << std::any_cast<int>(a) << '\n';
 
    // reset
    a.reset();
    if (!a.has_value())
        std::cout << "no value\n";
 
    // pointer to contained data
    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

[edit] See also

(C++11)
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassen-Template) [bearbeiten]
Move-only-Wrapper für jedes aufrufbare Objekt, das Qualifizierer in einer gegebenen Aufrufsignatur unterstützt
(Klassen-Template) [bearbeiten]
(C++17)
eine typsichere diskriminierte Union
(Klassentemplate) [bearbeiten]
(C++17)
ein Wrapper, der möglicherweise ein Objekt enthält oder auch nicht
(Klassenvorlage) [edit]