I don't know -- most implementations on popular architectures only have two (low order) bits for tagging due to alignment issues, so there may not be room. Might be easier in the case of a RISC V with the tagging extension.
Also it would be possible to implement such an approach in a C++ list container where you don't need boxing (the content type is known).