std::any(3)
π NAME π
Okay bestie, welcome to the std::any(3) page from the C++ Standard Library β¨. The name is literally std::any β std::any, and yes sheβs self-titled and iconic π.
πΈ Synopsis πΈ
Defined in header <any>
class any; (since C++17)
The class any describes a type-safe container for single values of any copy constructible type. No cap π
.
- An object of class
anystores an instance of any type that satisfies the constructor requirements or is empty, and this is referred to as the state of the classanyobject. 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. - The non-member
any_castfunctions 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 whichstd::is_nothrow_move_constructiblereturnstrue. fr fr, thatβs the rule π«Ά
β¨ Member functions β¨
- constructor β constructs an
anyobject (public member function) - operator= β assigns an
anyobject (public member function) - destructor β destroys an
anyobject (public member function)
π Modifiers π
- emplace β change the contained object, constructing the new object directly (
public member function) - reset β destroys contained object (
public member function) - swap β swaps two
anyobjects (public member function)
π¦ Observers π¦
- has_value β checks if object holds a value (
public member function) - type β returns the
typeidof the contained value (public member function)
π Non-member functions π
std::swap(std::any)β specializes thestd::swapalgorithm (C++17) (function)any_castβ type-safe access to the contained object (C++17) (function template)make_anyβ creates ananyobject (C++17) (function template)
π§ Helper classes π§
bad_any_castβ exception thrown by the value-returning forms ofany_caston a type mismatch (C++17) (class)
π Notes π
- Feature-test macro
__cpp_lib_anyβ value201606L, Std(C++17), featurestd::any.
π₯ Example π₯
Run this code, bestie β the manual literally says // Run this code:
#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';
}
Possible output:
int: 1
double: 3.14
bool: true
bad any_cast
int: 2
no value
3
β See also β
- function β wraps callable object of any copy constructible type with specified function call signature (
C++11) (class template) - move_only_function β wraps callable object of any type with specified function call signature (
C++23) (class template) - variant β a type-safe discriminated union (
C++17) (class template) - optional β a wrapper that may or may not hold an object (
C++17) (class template)
mwah π β source/version: http://cppreference.com Β· date: 2024.06.10 Β· and this whole iconic page is std::any(3) π«Ά
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms