any icon indicating copy to clipboard operation
any copied to clipboard

Implementation of std::experimental::any, including small object optimization, for C++11 compilers

Any

This is a implementation of N4562 std::experimental::any (merged into C++17) for C++11 compilers.

It contains a small object optimization for objects with a size of up to 2 words (such as int, float and std::shared_ptr). Storing those objects in the container will not trigger a dynamic allocation.

For a easy to understand documentation, see cppreference, except our namespace is linb.

Defines

You may additionally define the following preprocessor symbols (making the implementation non-standard):

  • ANY_IMPL_NO_EXCEPTIONS: This disables code paths that throw exceptions.
  • ANY_IMPL_NO_RTTI: This disables any::type(), thus removing all code paths using RTTI.
  • ANY_IMPL_FAST_TYPE_INFO_COMPARE: When checking if two typeid are the same, performs just a pointer comparison instead of the actual type_info::operator== comparison. Be aware this isn't recommended since objects passed across library boundaries mayn't compare equal. This has no effect if ANY_IMPL_NO_RTTI is defined.