
- C++ Library - Home
- C++ Library - <fstream>
- C++ Library - <iomanip>
- C++ Library - <ios>
- C++ Library - <iosfwd>
- C++ Library - <iostream>
- C++ Library - <istream>
- C++ Library - <ostream>
- C++ Library - <sstream>
- C++ Library - <streambuf>
- C++ Library - <atomic>
- C++ Library - <complex>
- C++ Library - <exception>
- C++ Library - <functional>
- C++ Library - <limits>
- C++ Library - <locale>
- C++ Library - <memory>
- C++ Library - <new>
- C++ Library - <numeric>
- C++ Library - <regex>
- C++ Library - <stdexcept>
- C++ Library - <string>
- C++ Library - <thread>
- C++ Library - <tuple>
- C++ Library - <typeinfo>
- C++ Library - <utility>
- C++ Library - <valarray>
- The C++ STL Library
- C++ Library - <array>
- C++ Library - <bitset>
- C++ Library - <deque>
- C++ Library - <forward_list>
- C++ Library - <list>
- C++ Library - <map>
- C++ Library - <multimap>
- C++ Library - <queue>
- C++ Library - <priority_queue>
- C++ Library - <set>
- C++ Library - <stack>
- C++ Library - <unordered_map>
- C++ Library - <unordered_set>
- C++ Library - <vector>
- C++ Library - <algorithm>
- C++ Library - <iterator>
- The C++ Advanced Library
- C++ Library - <any>
- C++ Library - <barrier>
- C++ Library - <bit>
- C++ Library - <chrono>
- C++ Library - <cinttypes>
- C++ Library - <clocale>
- C++ Library - <condition_variable>
- C++ Library - <coroutine>
- C++ Library - <cstdlib>
- C++ Library - <cstring>
- C++ Library - <cuchar>
- C++ Library - <charconv>
- C++ Library - <cfenv>
- C++ Library - <cmath>
- C++ Library - <ccomplex>
- C++ Library - <expected>
- C++ Library - <format>
- C++ Library - <future>
- C++ Library - <flat_set>
- C++ Library - <flat_map>
- C++ Library - <filesystem>
- C++ Library - <generator>
- C++ Library - <initializer_list>
- C++ Library - <latch>
- C++ Library - <memory_resource>
- C++ Library - <mutex>
- C++ Library - <mdspan>
- C++ Library - <optional>
- C++ Library - <print>
- C++ Library - <ratio>
- C++ Library - <scoped_allocator>
- C++ Library - <semaphore>
- C++ Library - <source_location>
- C++ Library - <span>
- C++ Library - <spanstream>
- C++ Library - <stacktrace>
- C++ Library - <stop_token>
- C++ Library - <syncstream>
- C++ Library - <system_error>
- C++ Library - <string_view>
- C++ Library - <stdatomic>
- C++ Library - <variant>
- C++ STL Library Cheat Sheet
- C++ STL - Cheat Sheet
- C++ Programming Resources
- C++ Programming Tutorial
- C++ Useful Resources
- C++ Discussion
C++ Library - <any>
The <any> header in C++17, provides a type safe container for single values of any type and allows to retrieve them in a safe manner. It is useful when the type of a variable cannot be determined at compile time, or when a function is expected to accept multiple types of input.
It holds a single instance of any type of value, and the type of the value is stored internally. It works like a type erased container, that hold objects of different types, as long as those types are copy constructible. However, the type information is not accessible at runtime unless you perform specific operations to extract or inspect it.
Including <any> Header
To include the <any> header in your C++ program, you can use the following syntax.
#include <any>
Functions of <any> Header
Below is list of all functions from <any> header.
Sr.No | Functions & Description |
---|---|
1 |
operator=
It assigns any object. |
2 |
emplace
It change the contained object, constructing the new object directly. |
3 |
reset
It destroys contained object. |
4 |
swap
It swaps two any objects. |
5 |
has_value
It checks if object holds a value. |
6 |
type
It returns the typeid of the contained value. |
Determine the Type of the Value
In the following example, we are going to use the x initially to hold the integer and then reassigned to hold the string value, Then the type() function us used to check the type of the stored value.
#include <iostream> #include <any> #include <string> int main() { std::any x = 1; if (x.type() == typeid(int)) { std::cout << "Integer value: " << std::any_cast < int > (x) << std::endl; } x = std::string("Welcome"); if (x.type() == typeid(std::string)) { std::cout << "String value: " << std::any_cast < std::string > (x) << std::endl; } return 0; }
Output
Following is the output of the above code −
Integer value: 1 String value: Welcome