It can happen that we want to store items of any type in a variable. For such a variable, we then need to be able to check whether it contains anything, and if it does, we need to be able to distinguish what it contains. All this needs to happen in a type-safe manner.
In the past, we were basically able to store pointers to various objects in a void*
pointer. A void
typed pointer alone cannot tell us what kind of object it points to, so we would need to handcraft some kind of additional mechanism that tells us what to expect. Such code quickly leads to quirky looking and unsafe code.
Another addition of C++17 to the STL is the std::any
type. It is designed to hold variables of any kind and provides facilities that enable for type-safe inspection and access to it.
In this recipe, we will play around with this utility type in order to get a feeling of it.