std::any
Da cppreference.com
Predefinição:cpp/utility/any/navbar
Definido no cabeçalho <any>
|
||
class any; |
||
The class any
describes a type-safe container for single values of any type.
1) An object of class
any
stores an instance of any type that satisfies the constructor requirements or is empty, and this is referred to as the state of the class any
object. The stored instance is called the contained object. Two states are equivalent if they are either both empty or if both are not empty and if the contained objects are equivalent.2) The non-member
any_cast
functions provide type-safe access to the contained object.Implementations are encouraged to avoid dynamic allocations for small objects, but such an optimization may only be applied to types for which std::is_nothrow_move_constructible returns true
.
Índice |
[editar] Member functions
Predefinição:cpp/utility/any/dsc constructorPredefinição:cpp/utility/any/dsc operator=Predefinição:cpp/utility/any/dsc destructorPredefinição:cpp/utility/any/dsc emplacePredefinição:cpp/utility/any/dsc resetPredefinição:cpp/utility/any/dsc swapPredefinição:cpp/utility/any/dsc has valuePredefinição:cpp/utility/any/dsc type Modifiers | |
Observers |
[editar] Non-member functions
Predefinição:cpp/utility/any/dsc swap2Predefinição:cpp/utility/any/dsc any castPredefinição:cpp/utility/any/dsc make any[editar] Helper classes
Predefinição:cpp/utility/any/dsc bad any cast[editar] 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 = 1; if (a.has_value()) { std::cout << a.type().name() << '\n'; } // reset a.reset(); if (!a.has_value()) { std::cout << "no value\n"; } // pointer to contained data a = 1; int* i = std::any_cast<int>(&a); std::cout << *i << "\n"; }
Potencial saída:
i: 1 d: 3.14 b: true bad any_cast i no value 1