std::any — type-erased container that can hold any copyable value.
1#include <any>23std::any a = 42; // int4a = std::string("hello"); // string5a = 3.14; // double67// Access with std::any_cast8try {9 int val = std::any_cast<int>(a); // Throws — a is double10} catch (const std::bad_any_cast& e) {11 std::cout << e.what();12}1314// Safe access15if (auto* p = std::any_cast<double>(&a)) {16 std::cout << *p; // 3.1417}1819// Check type20std::cout << a.type().name(); // double2122// Reset23a.reset();24std::cout << a.has_value(); // false
Use cases: