Pointer Tagging in C++: The Art of Packing Bits Into a Pointer

Using Tagged Pointers to Save Memory, Speed Up Dynamic Dispatch, and Compact Data Structures