Using std::any to store any value
C++ does not have a hierarchical type system like other languages (such as C# or Java) and, therefore, it does not have a possibility to store multiple types of value in a single variable like it is possible with type Object in .NET and Java or natively in JavaScript. Developers have long time used void* for that purpose, but this only helps store pointers to anything and is not type-safe. Depending on the end goal, alternatives can include templates or overloaded functions. However, C++17 has introduced a standard type-safe container, called std::any, that can hold a single value of any type.
Getting ready
std::any has been designed based on boost::any and is available in the <any> header. If you are familiar with boost::any and have used it in your code, you can migrate it seamlessly to std::any.
How to do it...
Use the following operations to work with std::any:
- To store values, use the constructor or assign them directly to a
std::anyvariable:
...